• LeetCode_3 sum closet


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

    3 sum 的变形,这里不需要考虑重复而已

    class Solution {
    public:
        int threeSumClosest(vector<int> &num, int target) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            sort(num.begin(), num.end());
            int len = num.size();
            if(len < 3) return 0;
            int res = num[0] + num[1] + num[2];
            for(int i = 0; i <= len -3; ++i){
                
                int low = i+1;
                int high = len -1;
                while(low < high){
                    
                    int sum = num[i] + num[low] + num[high];
                    if(sum == target)
                        return target;
                    else if(sum < target){
                        ++low;
                        if(abs(sum - target) < abs(res - target))
                            res = sum;
                    }else{
                        --high;
                        if(abs(sum - target) < abs(res - target))
                            res = sum;
    
                    }
                }
            }
            
            return res;
        }
    };
  • 相关阅读:
    sql语句
    CSS笔记
    mysql与oracle区别
    ajax请求aspx
    列表简单排序
    列表删除元素
    正则表达式简介
    创建列表
    动态串 StringBuilder
    StrinBuilder 追加 ,插入,删除,和替换操作
  • 原文地址:https://www.cnblogs.com/graph/p/3343847.html
Copyright © 2020-2023  润新知