首页 > 其他分享 >LeetCode 16. 最接近的三数之和

LeetCode 16. 最接近的三数之和

时间:2023-03-15 11:44:06浏览次数:36  
标签:target nums int 三数 sum 16 res LeetCode

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        int n=nums.size();
        pair<int,int> res(INT_MAX,0);//分别存储差值,和
        sort(nums.begin(),nums.end());
        for(int i=0;i<n;i++)
            for(int j=i+1,k=n-1;j<k;j++)
            {
                while(k-1>j&&nums[i]+nums[j]+nums[k-1]>=target)
                //找出满足三数之和≥target,k的最小值
                //试探k-1是否满足条件,需要保证k-1和j不重合
                    k--;
                int sum=nums[i]+nums[j]+nums[k];
                //此时k不一定保证三数之和≥target,也许找不到三数之和≥target,因此需要取绝对值
                res=min(res,make_pair(abs(sum-target),sum));
                if(k-1>j)
                {
                    sum=nums[i]+nums[j]+nums[k-1];
                    res=min(res,make_pair(target-sum,sum));
                    //这里不用取绝对值,三数之和一定<target
                }
            }
        return res.second;
    }
};

标签:target,nums,int,三数,sum,16,res,LeetCode
From: https://www.cnblogs.com/tangxibomb/p/17217944.html

相关文章

  • LeetCode474 一和零
    题目描述给你一个二进制字符串数组strs和两个整数m和n。请你找出并返回strs的最大子集的长度,该子集中最多有m个0和n个1。如果x的所有元素也是y......
  • LeetCode242. 有效的字母异位词
    题目描述:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若 s和t 中每个字符出现的次数都相同,则称 s和t 互为字母异位词。示例 1:......
  • 【LeetCode贪心#03】最大子序和
    最大子序和力扣题目链接给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输......
  • 2816. 判断子序列(双指针模板题)
    https://www.acwing.com/problem/content/2818/双指针模板题:i指针只有匹配到相等才++,j指针无论如何每次都++那么i==n时,意味着b序列中存在着a序列,且有序离散存放#inclu......
  • CF1665D GCD Guess
    个人思路:\(\gcd(x+a,x+b)=gcd(x+a,b-a)\)。考虑固定\(a\),然后试出来\(x+a\)所有因子。然后发现质数根本试不完。发现询问\(30\)次,\(2^{30}\)刚好比\(x\)大一......
  • 力扣 (LeetCode)刷题--704. 二分查找
    二分查找是一个非常基础的算法给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示......
  • LeetCode 15. 三数之和
    classSolution{public:vector<vector<int>>threeSum(vector<int>&nums){vector<vector<int>>res;sort(nums.begin(),nums.end());......
  • [思维提升|干货All in]6种算法解决LeetCode困难题:滑动窗口最大值
    为了更好的阅读体验,欢迎阅读原文:[思维提升|干货Allin]6种算法解决LeetCode困难题:滑动窗口最大值(eriktse.com)最近在leetcode遇到一道非常经典的题目:239.滑动窗口最......
  • [LeetCode] 62. 不同路径 java 动态规划解法
    classSolution{publicintuniquePaths(intm,intn){//确定dp数组以及下标的含义//dp[i][j]:表⽰从(0,0)出发,到(i,j)有dp[i][j]条不同的路径......
  • LeetCode142. 环形链表 II
    题目描述:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中......