继续哈希表
用到了map,对所有的遍历,动态控制一个长度为26的数组,对每一个遍历的都能够得到一个键值,如果map里不包含此键值,就放进去,获得键值后add里面。最后返回所有键值,map.get(key).add(strs[i]);
2,快乐数
也就是说,会存在无限循环,因此当出现和之前一致的数时,就应当跳出了。
用到了hash.add函数,当它的值返回false的时候,表明哈希表里面已经存在这个数字,所以就应当返回false了。用别的函数算每次每位的平方和。
3,四数相加
steps:定义unordered_map,key为a和b两数之和,value为a和b两数之和出现的次数;
遍历大A和大B数组,统计;
定义count,最终的结果变量;
遍历大C和大D数组,如果有0-(c+d)出现的话,给count赋值。
返回count;
4,三数之和
要先排序,用双指针法,for循环一个从0到length,left记为i+1;right从末尾开始,如果三数之和大于0,right--;三数之和小于0,left++;如果相等,就加入,并且移动right和left。删除重复的,对a的比较,如果现在与前一个相等,跳过这个i,right和left与前一个和后一个分别一样的时候,也挪动。
5,四数之和
与三数之和一致,就是加入两层for循环,再对4个数字分别进行去重处理;也是两个指针
另外,前面的也要判断,因为四个和为target而不是0;