Day12——哈希表专题 - 日理万妓 2024-04-03 14:19 39阅读 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 赞/ 40 阅读
相关 Day11——哈希表专题 文章目录 21.有效的字母异位词 22.两个数组的交集 -------------------- 21.有效的字母异位词 绝地灬酷狼/ 2024年04月03日 13:40/ 0 赞/ 25 阅读
相关 Day13——哈希表专题 文章目录 26.赎金信 27.三数之和 28.四数之和 -------------------- 26 矫情吗;*/ 2024年04月01日 09:02/ 0 赞/ 24 阅读
相关 哈希表 上一篇博客:[静态链表的介绍及实现][Link 1] > 写在前面:大家好!我是`AC-fun`,我的昵称来自两个单词`Accepted`和`fun`。我是一个热爱ACM的 ╰半夏微凉°/ 2022年10月30日 07:24/ 0 赞/ 189 阅读
相关 哈希表 我们知道,通过对数组进行直接寻址(Direct Addressing),可以在 O(1) 时间内访问数组中的任意元素。所以,如果存储空间允许,可以提供一个数组,为每个可能的关键 快来打我*/ 2022年06月05日 02:20/ 0 赞/ 338 阅读
相关 哈希表 1. 什么是哈希表 我们先来做个题(leetCode上387题) ![70][] public class Solution_387 { 朱雀/ 2022年05月16日 10:11/ 0 赞/ 277 阅读
相关 哈希表 哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0 今天药忘吃喽~/ 2022年02月01日 14:36/ 0 赞/ 385 阅读
相关 【哈希表】 char FirstNotRepeatingChar(char pString) { // invalid input if(! r囧r小猫/ 2022年01月06日 11:33/ 0 赞/ 306 阅读
相关 哈希表 一、简介 如果所有的键都是小整数,那么我们可以用一个数组来实现无序的符号表,将键作为数组的索引i而数组中i(键)处储存的就是对应的值。 这样就可以快速地访问任意键的值, 旧城等待,/ 2021年12月22日 01:21/ 0 赞/ 380 阅读
相关 哈希表 【一】哈希表 > 他通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数就是散列函数。 ![watermark_type_ZmFuZ3poZW5na 傷城~/ 2021年08月11日 17:13/ 0 赞/ 534 阅读
还没有评论,来说两句吧...