zoukankan      html  css  js  c++  java
  • [array] leetCode-16. 3Sum Closest -Medium

    16. 3Sum Closest -Medium

    descrition

    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 的思路一样。不同在于,我们现在希望找到距离 target 最近的数,参看代码。

    code

    
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <limits>
    
    using namespace std;
    
    class Solution{
    public:
    	int threeSumClosest(vector<int>& nums, int target){
    		sort(nums.begin(), nums.end()); // ascending
    
    		int min_gab = numeric_limits<int>::max();
    		int ans = target;
    
    		for(int i=0; i<nums.size(); i++){
    			int target_local = target - nums[i];
    			int ileft = i + 1;
    			int iright = nums.size() - 1;
    			while(ileft < iright){ // two pointer searching
    				int sum = nums[ileft] + nums[iright];
    				if(sum == target_local) // right answer
    					return target;
    				if(sum < target_local) // move ileft to increase sum
    					ileft++;
    				else // sum > target_local
    					iright--;
    
    				int gab = abs(sum - target_local);
    				if(gab < min_gab){
    					ans = sum + nums[i];
    					min_gab = gab;
    				}
    			}
    		}
    
    		return ans;
    
    	}
    };
    
    int main()
    {
    	return 0;
    }
    
    
  • 相关阅读:
    BurpSuite—-Spider模块(蜘蛛爬行)
    BurpSuite系列(一)----Proxy模块(代理模块)
    hadoop HA集群搭建步骤
    HBase详解
    MapReduce两种执行环境介绍:本地测试环境,服务器环境
    HBase性能优化方法总结
    HDFS原理解析
    ZooKeeper 典型应用场景
    Redis总结
    基于Apache Curator框架的ZooKeeper使用详解
  • 原文地址:https://www.cnblogs.com/fanling999/p/7828885.html
Copyright © 2011-2022 走看看