242.有效的字母异位词
思路:遍历S的时候,将对应字母的下标++,遍历T的时候,将对应的字母--,判断索引对应的是否为0
349.两个数组的交集
思路:长度比较大的nums放在一个Set里,循环比较小的数组,如果出现在Set里,就放进res里,最后return
202.快乐数
思路:使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。
1.两数之和
思路:创建一个map,key存放当前的值,value存放下标,存数据用set,获取key用has,获取value用get
454.四数相加Ⅱ
思路:四个数组两两循环,时间复杂度为n方,如果三个一起循环时间复杂度为n的三次方。
后两个数组的数两两相加为sum,前两个数组两两相加是-sum,则count加上-n出现的次数
383.赎金信
思路:出现在a里面的就必须在b里面能找到,而且b里面的a对应过的不能再使用,所以循环b并记录出现的次数,循环a的时候把对应的减掉,如果a里面出现了b没有的就return false
15.三数之和
思路:使用双指针,先对数组排序,循环变量i,left初始化为i+1,right初始化为数组的最后一位,判断三数之和与0的关系,大了就right--,小了就left++,直到等于0。对i去重的关键点:i: i和i-1比较
18.四数之和
思路:在三数之和的基础上增加一个变量i,即再加一层for循环,sum = i,j,left,right之和,当和大于target时,left++,反之right--,相等时将这四个数添加到res里。注意要对这四个数进行剪枝。