zoukankan      html  css  js  c++  java
  • lintcode-59-最接近的三数之和

    59-最接近的三数之和

    给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。

    注意事项

    只需要返回三元组之和,无需返回三元组本身

    样例

    例如 S = [-1, 2, 1, -4] and target = 1. 和最接近 1 的三元组是 -1 + 2 + 1 = 2.

    挑战

    O(n^2) 时间, O(1) 额外空间。

    标签

    排序 数组 两根指针

    思路

    延续三数之和的思路,实时更新最接近的三数和

    code

    class Solution {
    public:    
        /**
         * @param numbers: Give an array numbers of n integer
         * @param target: An integer
         * @return: return the sum of the three integers, the sum closest target.
         */
        int threeSumClosest(vector<int> nums, int target) {
            // write your code here
            int size = nums.size();
            if(size < 3) {
                return 0;
            }
    
            sort(nums.begin(),nums.end());
            int ans = 0x7FFFFFFF, i = 0, j = 0, k = 0;
    
            for(i=0; i<size; i++) {
                for(j=i+1, k=size-1; j<k;){
                    int sum = nums[i] + nums[j] + nums[k];
    
                    ans = abs(target-sum) < abs(target-ans) ? sum : ans;
    
                    if(sum > target) {
                        k--;
                    }
                    else if(sum < target) {
                        ++j;
                    }
                    else {
                        return sum;
                    }
                }
            }
            return ans;
        }
    };
    
  • 相关阅读:
    什么是封装?
    table
    POM文件
    Maven环境的搭建
    什么是maven
    J2EE的三层经典结构
    DOM对象和jQuery对象对比
    jQuery常用选择器分类
    什么是JQuery?它的特点是什么?
    jQuery准备函数语法
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7190640.html
Copyright © 2011-2022 走看看