编程学习笔记

LeetCode 16. 3Sum Closest(最接近的三数

2018-08-21  本文已影响5人  烛火的咆哮

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

示例:

给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

思路:

代码:

    public int threeSumClosest(int[] nums, int target) {
        Arrays.sort(nums);
        int res  = Integer.MAX_VALUE,res1 = 0,add,temp,flag= Integer.MAX_VALUE;
        for (int k = 0; k < nums.length; k++) {
            int i = k + 1, j = nums.length - 1;
            while (i < j) {
                temp = nums[k] +nums[i] + nums[j];
                add = target -temp;
                flag = Math.abs(add);
                if (flag < res) {
                    res = flag;
                    res1 = temp;
                } 
                if (add > 0)
                    i++;
                else
                    j--;
            }
        }
        return res1;  
    }

总结:

上一篇 下一篇

猜你喜欢

热点阅读