1.四数相加
要点:要统计a+b是否出现过,还要统计出现的次数,所以set不够,要用map。
两组合分成两部分来判断,时间复杂度
有value个a+b的值可以与c+d相加,所以,c+d找到对应值的时候count+=value
2.三数之和
这道题比较简单的是双指针法,哈希表方法需要去重,而unordered_map有是无序的,去重麻烦
要点:双指针法需要先排序(如果要返回三元数组的下标就不能排序)
因为循环之后i是三元数组最小的一个值,如果他已经大于0了,可以直接return了
数组已经排过序,所以相等的元素重复出现,所以判断当前元素是否与某个元素相等
永远记得,因为数组经过排序,所以三元数组一定是a<b<c,这就说明遍历时,找到一个a的话,涵盖这个值的所有组合已经被找到,所以相同值不用再考虑了
3.四数之和
双指针
在三数之和的基础上加个循环
两个负数相加会变小