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

    Problem statement:

    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).

    Solution:

    It is a change for 15. 3Sum, but quite similar, this problem requires to return the sum of three numbers which is most close to the target.

    Just do the absolute value test when we update the index, left and right, keep the closest sum and return at the end or in the loop. 

    Time complexity, two level loops, O(n * n).

    class Solution {
    public:
        int threeSumClosest(vector<int>& nums, int target) {
            sort(nums.begin(), nums.end());
            int closest_sum = nums[0] + nums[1] + nums[2];
            int size = nums.size();
            for(int i = 0; i < size - 1; i++){
                int left = i + 1;
                int right = size - 1;
                while(left < right){
                    if(abs(nums[i] + nums[left] + nums[right] - target) < abs(closest_sum - target)){
                        closest_sum = nums[i] + nums[left] + nums[right];
                    }
                    if(nums[i] + nums[left] + nums[right] == target){
                        return target;
                    } else if (nums[i] + nums[left] + nums[right] > target){
                        right--;
                    } else {
                        left++;
                    }
                }
            }
            return closest_sum;
        }
    };
  • 相关阅读:
    环境安装和工程搭建
    计算机发展史
    计算机硬件介绍--输入设备和输出设备
    计算机硬件介绍--内存
    bit和byte
    计算机硬件介绍--中央处理器--CPU
    取投料成本
    获取BOM标准用量
    取投料数量
    怎么更改當前的USERENV('LANG')返回值 oracle
  • 原文地址:https://www.cnblogs.com/wdw828/p/6883080.html
Copyright © 2011-2022 走看看