Day8|349. 两个数组的交集 202. 快乐数 1. 两数之和

张开发
2026/5/8 16:29:48 15 分钟阅读

分享文章

Day8|349. 两个数组的交集 202. 快乐数 1. 两数之和
两个数组的交集思路:给第一个数组放到一个Setset1new HashSet中 遍历第二个数组 用set.contains()方法 判断 如果包含就在另一个set中添加元素set集合取长度的时候 是用的方法 set.size();classSolution{publicint[]intersection(int[]nums1,int[]nums2){//思路 给两个数组放到大小为hashSet中if(nums1null||nums1.length0||nums2null||nums2.length0){returnnewint[0];}SetIntegerset1newHashSet();SetIntegerset2newHashSet();for(inti:nums1){set1.add(i);}for(inti:nums2){if(set1.contains(i)){set2.add(i);}}int[]resultnewint[set2.size()];intj0;for(inti:set2){result[j]i;}returnresult;}}方法2:使用Hash數組classSolution{publicint[]intersection(int[]nums1,int[]nums2){//通过哈希数组boolean[]existnewboolean[1001];for(inti:nums1){exist[i]true;}ListIntegerarrnewArrayList();for(inti:nums2){if(exist[i]){arr.add(i);exist[i]false;}}//给list放到数组里int[]resultnewint[arr.size()];for(inti0;iarr.size();i){result[i]arr.get(i);}returnresult;}}快乐数思路:主要是给一个数据 拆分位 然后平方后相加 给结果统计到set集合里 如果存在过 那就不是快乐数.classSolution{publicbooleanisHappy(intn){//判断是否为快乐数 第一不能有循环 然后就是给数字拆分SetIntegerrecordnewHashSet();while(n!1!record.contains(n)){record.add(n);ngetNext(n);}returnn1;}//拆分数据结果privateintgetNext(intn){intres0;while(n0){inttempn%10;restemp*temp;nn/10;}returnres;}}两数之和//使用哈希表publicint[]twoSum(int[]nums,inttarget){int[]resnewint[2];if(numsnull||nums.length0){returnres;}MapInteger,IntegermapnewHashMap();for(inti0;inums.length;i){inttemptarget-nums[i];// 遍历当前元素并在map中寻找是否有匹配的keyif(map.containsKey(temp)){res[1]i;res[0]map.get(temp);break;}map.put(nums[i],i);// 如果没找到匹配对就把访问过的元素和下标加入到map中}returnres;}

更多文章