ZS_6205_反转之后不同整数的数目
LeetCode-315-2022-10-16 10:30 6205.反转之后不同整数的数目
给你一个由正整数组成的数组nums 。
你必须取出数组中的每个整数,反转其中每个数位,并将反转后得到的数字添加到数组的末尾。这一操作只针对 nums 中原有的整数执行。
返回结果数组中 不同 整数的数目。
来源:力扣315周赛(LeetCode)
难度:中等#
早上刚刚看了数据结构里的哈希表,知道了能够去重,结果就考了这道题。P217.存在重复元素&P53.最大子数组和
示例 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
题解:#
将原数组的各个数和其反转后的数都存入表中,最后输出表的大小即可
class Solution { public int countDistinctIntegers(int[] nums) { Set<Integer> set = new HashSet<Integer>(); for (int i = 0; i < nums.length; i++) { set.add(nums[i]); set.add(reverseNum(nums[i])); } return set.size(); } private static Integer reverseNum(int num) { int temp = 0; while (num != 0) { temp = temp * 10 + num % 10; num = num / 10; } return (int) temp == temp ? (int) temp : 0; } }
HashMap#
HashSet是HashMap的set实现,哈希表逻辑上是数组和单向链表的结合体。数组的查询效率高,随机增删效率低;单向链表增删效率高,查询效率低。而哈希表将这两种数据结构结合,充分发挥他们的优点。
高情商:哈希表比数组增删快,比链表查询快,哈希表优于他们
低情商:哈希表没有数组查询快,没有链表增删快,哈希表谁都不如
哈希表是一个一维数组,数组的每一个元素都是一个单向链表。
一图流理解,出自BerglingYY的博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通