算法小知识-----8.01-----痛苦周一

328 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情

痛苦周一,而且周日的周赛题报名了没做,可以说是血亏

生成每种字符都是奇数个的字符串

该题出自力扣的1374题 —— 生成每种字符都是奇数个的字符串【简单题】

审题

给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。
返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。

  • 该题并不复杂,就是根据给出的整数n,返回n个字符串,且都是奇数 + 小写字母
  • 抛开问题,直至本质,那就直接用"a"和"b"两个字符,并根据奇偶数去实现插入即可
  • 除了传统的for循环 + StringBuilder 去实现重复字符串以外,还可以使用jdk11的String.reaet方法

编码

class Solution {
    public String generateTheString(int n) {
        StringBuilder sb = new StringBuilder();
        if ((n & 1) == 1){
            //奇数
            for (int i = 0; i < n; i++) {
                sb.append("a");
            }
        }else {
            for (int i = 0; i < n - 1; i++) {
                sb.append("a");
            }
            sb.append("b");
        }
        return sb.toString();
    }
}

image.png

使数组中所有元素都等于零

该题出自力扣的6132题 —— 使数组中所有元素都等于0【简单题】,只要题目做得早,双百少不了

审题

给你一个非负整数数组 nums 。在一步操作中,你必须:

  • 选出一个正整数 x ,x 需要小于或等于 nums 中 最小 的 非零 元素。
  • nums 中的每个正整数都减去 x。
  • 返回使 nums 中所有元素都等于 0 需要的 最少 操作数。
  • 题意不难,就是返回需要多少次才能把整个数组归零
  • 这题并不需要根据每次操作而对数组进行变形
    • 相对于数组的多样性数值
    • 利用Set的唯一性,最终返回set的长度即可

编码

class Solution {
    public int minimumOperations(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for (int num:nums) {
            if (num == 0)continue;
            set.add(num);
        }
        return set.size();
    }
}

image.png