Leetcode16 3Sum Closest

XSum系列很牛逼啊都,这个虽然和3Sum题目很像,但是思路又有一些不同,首先肯定是沿着3Sum的思路做。

import java.util.*;

public class Sum3Closest16 {
    public int threeSumClosest(int[] nums, int target) {
        Arrays.sort(nums);
        int ans = nums[0]+nums[1]+nums[2];
        for(int i=0;i<nums.length-2;i++) {
            int low=i+1,high=nums.length-1;
            while(low<high) {
                int sum = nums[i]+nums[low]+nums[high];
                if(Math.abs(sum-target)<Math.abs(ans-target)) {
                    ans=sum;
                }
                if(nums[low]+nums[high]>target-nums[i]) {
                    high--;
                }
                else if (nums[low]+nums[high]<target-nums[i]) {
                    low++;
                }
                else {
                    ans=sum;
                    return ans;
                }
            }
        }
        return ans;
    }
}

时间O(n^2),25ms,13.54%—10ms,94.93%波动。

简单瞟了下6ms答案,时间复杂度和我一样,那这题就先这样 吧~

猜你喜欢

转载自www.cnblogs.com/chason95/p/10031234.html
今日推荐