242、有效的字母异位词
关键点1:用数组实现 --->新建一个length = 26的数组nums,
关键点2:对字符串A的操作,遍历字符串s_A,nums[s_A.charAT(i) -'a']++
关键点3:对字符串B的操作,遍历字符串s_B,nums[s_B.charAT(i) -'a']--
关键点4:遍历数组nums,if数组中有元素不为0,就返回false,否则就返回true
349、 两个数组的交集
关键点1:用HashSet实现,新建两个set,set1和resSet一个用来做判断用,一个用来存数据用,因为存放数据set相比数组而言,set有去重的作用
关键点2:遍历数组1,将数组1中的元素全部存入set1中
关键点3:遍历数组2,判断数组2中的元素,是否在set1中:if(set1.contains(nums2[i])),如果在,则存入resSet
关键点4:新建一个数组,将resSet中的元素存入数组中
int j=0;
for(int i:resSet){
resArr[j++] = i;
}
202、 快乐数
关键点1:用HashSet实现,新建一个set,当n不在set里,则将n这个数添加到set中,然后调用计算下一个n的方法
public int getN(int n){
int res = 0;
while(n > 0){
int temp = n % 10;
res += temp * temp;
n = n / 10;
}
return res;
}
关键点2:如果n == 1 则返回true,否则返回false
1、两数之和(target = numX+numY )
关键点1:用HashMap实现,新建一个map,key放数组的值,value 放值对应的下标index
关键点2: 遍历数组,numY = target - nums[i],判断numY 是否在map中,如果在,num[i]和numY就是这两个数,它们对应的下标 i 和map.get(numY)就是返回的下标值,如果不在则返回new int[0]
有具体返回数值的,要注意前面数组的单独判断条件,返回空的时候也要注意:大多时候是 return new int[0]; 除非题目说明可以返回null,例如下面:
if(nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0){
return new int[0];
}