1. 程式人生 > >Leetcode16 3Sum Closest

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答案,時間複雜度和我一樣,那這題就先這樣 吧~