zoukankan      html  css  js  c++  java
  • [LC] 16. 3Sum Closest

    Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

    Example:

    Given array nums = [-1, 2, 1, -4], and target = 1.
    
    The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

    class Solution {
        public int threeSumClosest(int[] nums, int target) {
            int globalMin = Integer.MAX_VALUE;
            int res = globalMin;
            if (nums == null || nums.length == 0) {
                return res;
            }
            Arrays.sort(nums);
            for (int i = 0; i < nums.length - 2; i++) {
                // skip i as well
                if (i > 0 && nums[i - 1] == nums[i]) {
                    continue;
                }
                int j = i + 1, k = nums.length - 1;
                // j and k cannot meet since may add the same number twice
                while (j < k) {
                    int sum = nums[i] + nums[j] + nums[k];
                    if (sum < target) {
                        if (target - sum < globalMin) {
                            globalMin = target - sum;
                            res = sum;
                        }
                        j+=1;
                    } else {
                        if (sum - target < globalMin) {
                            globalMin = sum - target;
                            res = sum;
                        }
                        k-=1;
                    }
                }
            }
            return res; 
        }
    }
  • 相关阅读:
    线程练习-网络买票
    永久储存信息(已完善)
    Linux命令
    oracle(3)
    小结
    java开发中中文编码问题
    double保留两位小数
    oracle(2)
    javadate相关
    分布式
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12408543.html
Copyright © 2011-2022 走看看