双指针法:
将数组按照从大到小排序后,定义两个指针,分别指向第i+1和第len-1个元素,根据nums[i]+nums[left]+nums[right]和0的关系,选择left++或者right--,一直循环到left==right为止。又因为不能有重复的输出,所以在遍历时,要去除第i个元素后相同的元素,同理,需要在找到nums[i]+nums[left]+nums[right]=0,更新left和right时,去除重复的元素。

Hash函数法
将nums[i]作为外层,内层nums[j],利用unordered_map,寻找-nums[i]-nums[j],如果unordered_map中没有找到,将nums[j]插入unordered_map,j++继续循环。如果找到了,保存结果,j++,并且防止输出重复的结果。

5464

被折叠的 条评论
为什么被折叠?



