LeetCode解:三个数之和
给你一个包含n个整数的数组nums,判断nums中是否有A,B,C三个元素,使得a+b+c=0?请找出所有和为0且不重复的三元组。
注意:答案不能包含重复的三元组。
输入:nums =,[-1,0,1]]
其实我们可以把这个问题转化为LeetCode的两个数之和,具体方法如下:
前提是,我们需要对数组进行排序。
首先,外层首先作为第一个数字进行遍历,并将目标数字设置为-nums[first]。
接下来我们只需要两个双指针,第二个和第三个,分别指向第一个+1和最后一个数字,两个指针随着遍历向中间靠拢。if nums[第二]+nums[第三]>;目标,则第三个向左移动,否则,第二个向左移动。第二个随着内部遍历而增加。
因为我们提前对数组进行了排序,所以在内循环到second=third的时候还是找不到答案,所以跳过内循环,直接进入下一个first。
复杂性分析