zoukankan      html  css  js  c++  java
  • LeetCode(16)题解--3Sum Closest

    https://leetcode.com/problems/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).

    思路:

    和上一道差不多,主要还是有序数组里两个flag移动。

    AC代码:

    class Solution {
    public:
        int threeSumClosest(vector<int>& nums, int target) {
            int res,t,j,k,lowerbound=INT_MAX,n=nums.size();
            sort(nums.begin(),nums.end());
            for(int i=0;i<n-2;i++){
                t=target-nums[i];
                j=i+1;
                k=n-1;
                while(j<k){
                    if(abs(nums[j]+nums[k]-t)<lowerbound){
                        res=nums[i]+nums[j]+nums[k];
                        lowerbound=abs(nums[j]+nums[k]-t);
                    }
                    if(nums[j]+nums[k]<t)
                        j++;
                    else
                        k--;
                }
            }
            return res;
        }
    };
  • 相关阅读:
    HDU 3081 Marriage Match II
    HDU 4292 Food
    HDU 4322 Candy
    HDU 4183 Pahom on Water
    POJ 1966 Cable TV Network
    HDU 3605 Escape
    HDU 3338 Kakuro Extension
    HDU 3572 Task Schedule
    HDU 3998 Sequence
    Burning Midnight Oil
  • 原文地址:https://www.cnblogs.com/aezero/p/4841692.html
Copyright © 2011-2022 走看看