首页 > 其他分享 >【力扣16】最接近的三数之和

【力扣16】最接近的三数之和

时间:2024-09-12 15:23:49浏览次数:10  
标签:target nums int 三数 16 力扣 res pair

16. 最接近的三数之和 - 力扣(LeetCode)

接近target:大于或小于两种情况。但是实际操作中只需考虑大于的情况,找到之后结果的前一个数也有可能是结果,进行比较(更新结果res)。第二种情况的实现依靠右指针的移动

思路类似15

对于每个 j ,找到一个最小的 k ,使得满足条件(j变大,k一定减小即 k-- ) 

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        //int res = 0, m = 0;
        //不这样声明变量,改用pair存储差值和三数之和(最终结果在其中)
        pair<int,int> res(INT_MAX, INT_MAX);//找小值,初始设为无穷大
        sort(nums.begin(), nums.end()); //为双指针做准备
        for(int i = 0; i<nums.size(); i++){
            for(int j=i+1, k=nums.size()-1; j<k; j++){
                while(k-1>j && nums[i]+nums[j]+nums[k-1]>=target)
                    k -- ; //指针左移的情况
                int s = nums[i]+nums[j]+nums[k];//求和
                res = min(res, make_pair(abs(s-target),s));
                if(k-1 > j){ //第二种情况
                    s = nums[i]+nums[j]+nums[k-1];
                    res = min(res, make_pair(target-s, s));
                }
            } 
        }
        return res.second; //返回结果res值的second
    }
};
//问题:变量冗余(三数之和大于res时,跳出)


标签:target,nums,int,三数,16,力扣,res,pair
From: https://blog.51cto.com/u_16319570/11991732

相关文章

  • 力扣238 移动零 Java版本 时间复杂度为O(0)
    文章目录题目描述代码题目描述给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输出......
  • 2024年市场营销人员需要了解的16个Snapchat用户数据
    Snapchat年龄分布Snapchat性别分布Snapchat收入分布Snapchat地理位置分布我们都知道每个Snapchat用户都是独特且珍贵的,但让一个普通的社交媒体经理了解应用程序的8亿月度活跃用户的全部情况实在是太难了。这时,Snapchat的人口统计数据就派上用场了。这些方便的数据让我......
  • iPhone 16发布后,我对苹果智能仍有的5个疑问
    从下个月开始,AppleIntelligence将在您的iPhone、iPad和Mac上推出。乍一看,灵活的写作工具、更个性化的Siri以及一键清理照片中不想要的内容这些功能都听起来不错,但AppleIntelligence带来了许多问题,几乎和它解决的问题一样多。由于iOS18.1和macOSSequoia的测试版已经发布有......
  • 9/12力扣刷题笔记
     动态规划法,时间和空间复杂度均为O(n)此方法超出时间限制。 用滚动数组思想,把空间复杂度优化成O(1) 70.爬楼梯-力扣(LeetCode)官方题解的方法2,3没看。 classSolution{public:stringaddBinary(stringa,stringb){intlen_a=a.length();......
  • Springboot计算机毕业设计新能源汽车租赁gvy16
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,汽车品牌,汽车信息,汽车租赁,汽车归还,催还信息开题报告内容一、研究背景与意义1.1研究背景随着全球能源危机的日益严重和环境污染问题的加剧,新能源汽车......
  • 15_三数之和
    15_三数之和【问题描述】给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。示例一:输入:nums......
  • 苹果iPhone16全系集成Secure Exclave,硬件级提醒麦克风和摄像头
    9月12日消息,科技媒体9to5Mac于昨日发布了一篇深度分析文章,通过深入挖掘iOS18的固件代码,确认了苹果即将发布的所有4款iPhone16系列机型均集成了SecureExclave安全组件。这一安全组件的加入,标志着苹果在保护用户隐私方面又迈出了重要一步。SecureExclave:安全基石,隐私守护者......
  • 数据库tips16
    (九)、E-R图在设计E-R图的过程中,首先应该确定相关的实体,即将所有对象进行分类:然后根据各类确定的实体,找出每一实体应具有的属性,这一过程称为聚集;再从相关实体中抽象出子类和父类,这一过程称为概括。面向不同的应用,设计E-R图,在构建实体时只需要考虑应用中所需要的属性。因此,面向不同......
  • 【力扣15】三数之和
    15.三数之和-力扣(LeetCode)双指针算法核心:有序(有序了才能使用双指针)因此,先排序,且保证i<j<k的顺序;顺序确定,双指针才能有序移动,可以将原本o(n2)复杂度降未o(n)双指针:先想暴力做法,再看有没有单调性,有单调性就用双指针有三个数,但只有双指针,所以先枚举一个数;后两个数按照双指针,根......
  • 【小白深度教程 1.16】手把手教你使用 Pytorch3D(1)使用 3D 损失函数来拟合 Mesh
    【小白深度教程1.16】手把手教你使用Pytorch3D(1)使用3D损失函数来拟合Mesh1.安装和导入模块2.加载.obj文件并创建Mesh对象3.可视化源Mesh和目标Mesh4.迭代优化进行拟合5.可视化损失6.保存结果在这篇文章中,我们将学习如何使用3D损失函数变形源......