zoukankan      html  css  js  c++  java
  • [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).

     1 class Solution {
     2 public:
     3     int threeSumClosest(vector<int>& nums, int target) {
     4         int ret;
     5         
     6         sort(nums.begin(), nums.end());
     7         
     8         int mindiff = INT_MAX;
     9         
    10         for (int i = 0; i < nums.size(); i++){
    11             int left = i + 1;
    12             int right = nums.size() - 1;
    13             
    14             while (left < right){
    15                 if (abs(nums[i] + nums[left] + nums[right] - target) < mindiff){
    16                     mindiff = abs(nums[i] + nums[left] + nums[right] - target);
    17                     ret = nums[i] + nums[left] + nums[right];
    18                 }
    19                 if (nums[left] + nums[right] < target - nums[i]){
    20                     left++;
    21                 }else if (nums[left] + nums[right] > target - nums[i]){
    22                     right--;
    23                 }else{
    24                     return target;
    25                 }    
    26             }
    27         }
    28         
    29         return ret;
    30     }
    31 };
  • 相关阅读:
    友盟推送
    主流推送平台分析
    “完成”的定义和测试的职责
    HDU 1069 Monkey and Banana
    HDU 5587 Array
    ACM组队安排(hdu校赛)
    逆袭指数(hdu校赛)
    玩骰子(hdu校赛)
    Codeforce 546 A. Soldier and Bananas
    Codeforce 546 B. Soldier and Badges
  • 原文地址:https://www.cnblogs.com/amadis/p/5926497.html
Copyright © 2011-2022 走看看