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

    给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

    参考了之前的三数之和的双指针算法,对撞指针思想。

    class Solution {
    public:
        int threeSumClosest(vector<int>& nums, int target) {
            int min = INT_MAX;
            int result;
            if(nums.empty()) return 0;
            sort(nums.begin(), nums.end());
           
            for(int i = 0; i < nums.size(); i++) {
                int fix = nums[i];
                if(i > 0){
                    if(nums[i] == nums[i-1]) continue;
                }
                int left = i+1;
                int right = nums.size()-1;
                while(left < right) {
                    if(nums[left]+nums[right]+fix == target  ){
                        return target;                                
                    } else if(nums[left]+nums[right]+fix > target){   
                        int tmp = nums[left]+nums[right]+fix-target;
                        if(min > tmp){
                            min = tmp;
                            result = tmp+target;
                        }
                        right--;                    
                    } else {
                        int tmp = target - (nums[left]+nums[right]+fix);
                        if (min > tmp){
                            min = tmp;
                            result = target-tmp;
                        }
                        left++;                    
                    }
                }
            }
            return result;
        }
    };
    The Safest Way to Get what you Want is to Try and Deserve What you Want.
  • 相关阅读:
    Chrome控制台JS设置xpath定位
    logging.exception
    python去除换行和空格
    从剪切板获取的内容无法使用type函数得到数据类型
    python获取剪切板的内容
    hdoj Radar Installation
    hdoj- Windows Message Queue
    hdoj-看病要排队
    hdoj-1896 stones
    评委会打分
  • 原文地址:https://www.cnblogs.com/Shinered/p/11249452.html
Copyright © 2011-2022 走看看