持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情
前言
小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标300题,记录从0到1的全过程!!
力扣第 315 场周赛-力扣
力扣第 315 场周赛-力扣
a了三题,第一题第二题比较简单,几分钟就做了。第三题没想到暴力可以过,真是想了半天,还wa了一次。第四题坐牢。
因为第三题耽误太长时间,排名贼靠后,又要掉分了!!
第314双周赛的排名
第88双周赛的排名
第313周赛的排名
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 <= 1051 <= 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道!!!!