349 两个数组的交集
加强对集合和stream的掌握
Arrays.sort(nums1);
Arrays.sort(nums2);
HashSet<Integer> set=new HashSet<>();
int n1,n2;
for (int i=0,j=0;i<nums1.length&&j<nums2.length;){
if(nums1[i]>nums2[j])j++;
else if(nums1[i]<nums2[j])i++;
else {
set.add(nums1[i]);
i++;
j++;
}
}
int[] res=new int[set.size()];
int i=0;
Iterator<Integer> iterator = set.iterator();
while(iterator.hasNext()){
res[i++]=iterator.next();
}return res;
202 快乐数
public boolean isHappy(int n) {
int sum=0;
for(;n>0;n/=10){
sum+=(n%10)*(n%10);
}
if(sum==1)return true;
if(sum==4)return false;
else return isHappy(sum);
}
454 四数相加 II
给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:
0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
HashMap<Integer, Integer> hashMap = new HashMap<>();
int sum=0;
for (int i=0;i<nums1.length;i++){
int t;
for (int j = 0; j <nums2.length; j++) {
t=nums1[i]+nums2[j];
if(hashMap.putIfAbsent(nums1[i]+nums2[j],0)!=null)
hashMap.put(t,hashMap.get(t)+1);
}
}
for (int i=0;i<nums3.length;i++){
int t;
for (int j = 0; j <nums4.length; j++) {
t=nums3[i]+nums4[j];
if(hashMap.containsKey(-t)){
sum+=(hashMap.get(-t)+1);
}
}
}
return sum;
}