• [LeetCode] 16. 3Sum Closest ☆☆☆


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

        For example, given array S = {-1 2 1 -4}, and target = 1.
    
        The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

    解法: 

      这道题让我们求最接近给定值的三数之和,是在之前那道3Sum的基础上又增加了些许难度,那么这道题让我们返回这个最接近于给定值的值,即我们要保证当前三数和跟给定值之间的差的绝对值最小,所以我们需要定义一个变量diff用来记录差的绝对值,然后我们还是要先将数组排个序,然后开始遍历数组,思路跟那道三数之和很相似,都是先确定一个数,然后用两个指针left和right来滑动寻找另外两个数,每确定两个数,我们求出此三数之和,然后算和target的差的绝对值,如果比diff小则更新diff的值。注意,如果三数之和正好等于target,直接返回target即可,因为不会有其他数比本身更接近自己了。代码如下:

    public class Solution {
        public int threeSumClosest(int[] nums, int target) {
            int diff = nums[0] + nums[1] + nums[2] - target;
            
            Arrays.sort(nums);
            
            for (int i = 0; i < nums.length - 2; i++) {
                if (i > 0 && nums[i] == nums[i - 1]) {
                    continue;
                }
                
                int left = i + 1, right = nums.length - 1;
                while (left < right) {
                    int sum = nums[i] + nums[left] + nums[right];
                    diff = Math.abs(sum - target) < Math.abs(diff) ? sum - target : diff;
                    
                    if (sum == target) {
                        return sum;
                    } else if (sum < target) {
                        while (left < right && nums[left++] == nums[left]) {}
                    } else {
                        while (left < right && nums[right--] == nums[right]) {}
                    }
                }
            }
            return target + diff;
        }
    }
  • 相关阅读:
    plsql和tsql常用函数比对
    全面对比T-SQL与PL/SQL
    SQL/T-SQL/PLSQL
    Oracle数据库中的数据出错的解决办法
    2008-03-18 22:58 oracle基础知识小结
    Oracle SQL性能优化
    Oracle存储过程基本语法
    jenkins权限配置不对导致jenkins无法登陆
    jenkins关闭和重启
    Jenkins的安装(最为简单的安装方法)
  • 原文地址:https://www.cnblogs.com/strugglion/p/6408110.html
Copyright © 2020-2023  润新知