三数之和(排序+双指针)
题目链接:https://leetcode-cn.com/problems/3sum/
看到题意,很自然的想到三层循环,但是数组中可能有重复,复杂度较高,为O(N^3)(N是数组的长度),于是我们给它加一点判断条件,每次进入循环后,判断当前值和上一循环值是否相同。继续,我们能想到,可以把三层循环简化为两层循环,因为当我们给数组升序后,左边的数字一定不大于右边的数字。所以可以开始固定一个数,在其后增加两个指针,比较两个指针的和与目标值的大小来左右移动。
class Solution {
public List> threeSum(int[] nums) {
List> ans = new ArrayList<>();
if(nums == null || nums.length<=2) return ans
三数之和(排序+双指针)最先出现在Python成神之路。
共有 0 条评论