Day12——哈希表专题 - 日理万妓 2024-04-03 14:19 77阅读 0赞 #### 文章目录 #### * * * 23.快乐数 * 24.两数之和 * 25.四数相加 -------------------- #### 23.快乐数 #### **通过哈希判重:** 这道题目使用哈希法,来判断这个res是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止,则返回true class Solution { public boolean isHappy(int n) { HashSet<Integer> hashSet = new HashSet<>(); while (n != 1 && !hashSet.contains(n)) { hashSet.add(n); n = getnextNumber(n); } return n == 1; } private int getnextNumber(int n){ int res = 0; while (n>0){ int i = n%10; res+=i*i; n = n/10; } return res; } } #### 24.两数之和 #### 在遍历数组的时候,只需要向map去查询是否有和目前遍历元素比配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。 * 对于每一个x,我们判断哈希表中是否存在target-x,若存在,则返回哈希表里的value和x的value * 反之将x的插入哈希表即可 class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; if(nums==null||nums.length==0){ return res; } HashMap<Integer, Integer> hashMap = new HashMap<>(); for(int i =0;i<nums.length;i++){ int temp = target - nums[i]; if(hashMap.containsKey(temp)){ res[1] = i; res[0] = hashMap.get(temp); } hashMap.put(nums[i],i); } return res; } } #### 25.四数相加 #### **本题解题步骤:** 1. 首先定义 一个unordered\_map,key放a和b两数之和,value 放a和b两数之和出现的次数。 2. 遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。 3. 定义int变量count,用来统计 a+b+c+d = 0 出现的次数。 4. 在遍历大C和大D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。 5. 最后返回统计值 count 就可以了 class Solution { public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) { HashMap<Integer, Integer> hashMap = new HashMap<>(); int temp; int res = 0; for (int i : nums1) { for (int j : nums2) { temp = i + j; if(hashMap.containsKey(temp)){ hashMap.put(temp, hashMap.get(temp)+1); }else { hashMap.put(temp,1); } } } for (int i : nums3) { for (int j : nums4) { temp = i+j; if(hashMap.containsKey(0-temp)){ res+= hashMap.get(0-temp); } } } return res; } }
相关 Day12——哈希表专题 文章目录 23.快乐数 24.两数之和 25.四数相加 -------------------- 23 - 日理万妓/ 2024年04月03日 14:19/ 0 赞/ 78 阅读
相关 Day11——哈希表专题 文章目录 21.有效的字母异位词 22.两个数组的交集 -------------------- 21.有效的字母异位词 绝地灬酷狼/ 2024年04月03日 13:40/ 0 赞/ 61 阅读
相关 Day13——哈希表专题 文章目录 26.赎金信 27.三数之和 28.四数之和 -------------------- 26 矫情吗;*/ 2024年04月01日 09:02/ 0 赞/ 59 阅读
相关 哈希值 哈希表_哈希杰森 哈希值 哈希表 我最近写了一个[简单的库,可预测地对json进行哈希处理][json] 。 该实用程序基于出色的[Jackson Json解析库][Jackson Json 阳光穿透心脏的1/2处/ 2023年02月25日 04:56/ 0 赞/ 28 阅读
相关 哈希表 ![Center][] [Center]: /images/20220731/1379dbdc6efb4a42a0b011f0b3aa4455.png 「爱情、让人受尽委屈。」/ 2022年08月14日 04:56/ 0 赞/ 216 阅读
相关 哈希表 什么是哈希表 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的[数据结构][Link 1]。也就是说,它通过把关键码 悠悠/ 2022年07月15日 12:14/ 0 赞/ 233 阅读
相关 哈希表 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速 系统管理员/ 2022年06月10日 01:26/ 0 赞/ 287 阅读
相关 哈希表 我们知道,通过对数组进行直接寻址(Direct Addressing),可以在 O(1) 时间内访问数组中的任意元素。所以,如果存储空间允许,可以提供一个数组,为每个可能的关键 快来打我*/ 2022年06月05日 02:20/ 0 赞/ 395 阅读
相关 哈希表 一、简介 如果所有的键都是小整数,那么我们可以用一个数组来实现无序的符号表,将键作为数组的索引i而数组中i(键)处储存的就是对应的值。 这样就可以快速地访问任意键的值, 旧城等待,/ 2021年12月22日 01:21/ 0 赞/ 439 阅读
相关 哈希表 【一】哈希表 > 他通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数就是散列函数。 ![watermark_type_ZmFuZ3poZW5na 傷城~/ 2021年08月11日 17:13/ 0 赞/ 587 阅读
还没有评论,来说两句吧...