[杨小白]_leetcode_力扣第 315 场周赛-力扣-第二题

199 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

前言

小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标300题,记录从0到1的全过程!!

力扣第 315 场周赛-力扣

力扣第 315 场周赛-力扣

a了三题,第一题第二题比较简单,几分钟就做了。第三题没想到暴力可以过,真是想了半天,还wa了一次。第四题坐牢。

因为第三题耽误太长时间,排名贼靠后,又要掉分了!!

image.png

第314双周赛的排名 image.png

第88双周赛的排名 image.png

第313周赛的排名

image.png

2442. 反转之后不同整数的数目

给你一个由 正 整数组成的数组 nums 。

你必须取出数组中的每个整数,反转其中每个数位,并将反转后得到的数字添加到数组的末尾。这一操作只针对 nums 中原有的整数执行。

返回结果数组中 不同 整数的数目。

示例 1

  • 输入:nums = [1,13,10,12,31]
  • 输出:6
  • 解释:反转每个数字后,结果数组是 [1,13,10,12,31,1,31,1,21,13] 。
  • 反转后得到的数字添加到数组的末尾并按斜体加粗表示。注意对于整数 10 ,反转之后会变成 01 ,即 1 。
  • 数组中不同整数的数目为 6(数字 1、10、12、13、21 和 31)。

示例 2

  • 输入: nums = [2,2,2]
  • 输出: 1
  • 解释: 反转每个数字后,结果数组是 [2,2,2,2,2,2] 。
  • 数组中不同整数的数目为 1(数字 2)。

提示

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 106

代码

遍历一遍数组,利用哈希表去重,把nums[i]和反转后的数都添加到哈希表中。

反转数字有两个方法,一个是数字法,通过/10和%10求得,还有一个就算化为字符串,调用字符串的api反转后,再通过Integer把字符串变成数字。

class Solution {
    public int countDistinctIntegers(int[] nums) {
        HashSet<Integer> set = new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
            StringBuilder sb = new StringBuilder();
            sb.append(nums[i]);
             sb = sb.reverse();
            set.add(nums[i]);
            set.add(Integer.parseInt(sb.toString()));
        }
        return set.size();
    }
}

第一题连接如下-2441. 与对应负数同时存在的最大正整数

2441. 与对应负数同时存在的最大正整数

第三题连接如下-2443.反转之后数字和

2443.反转之后数字和

3.结束

又是掉分的一场周赛,第三题不应该困扰那么长时间的。我当时看好多人都做出来了,想的是,是不是直接return false或者是什么啊,还wa了一次。gogogo,刷题刷题,每天一道,三年1000道!!!!