leetcode解题报告16. 3Sum Closest

OpenClaw一人公司落地案例:本地商家营销智能体月赚3万的秘密 角色:本地商家营销专家## 核心目标为商家生成高转化率的抖音营销策略,最大化 ROI。## 输入数据- 商家名称: "XX奶茶店"- 过去 30 天视频播放量: 12,000- 客单价: 28 元- 竞品平均播放量: 15,000- 市场趋势: rising## 策略生成规则1. **内容类型**:根据客单价推荐- < 30 元:美食探店 + 优惠券- > 30 元:场景化故事 + 会员权益2. **发布时间**:根据历史数据- 18:00-20:00 高峰期。 阅读详情

leetcode解题报告16. 3Sum Closest

题目地址

难度是medium

题目描述

和3SUM问题类似,输入一个整数数组,和一个目标整数target。从数组中选择3个数,使得这三个数之和最接近target。要求返回这三个数之和即可,不要求具体返回是哪三个数。默认有且只有一个解。

我的思路

同样地最简单的方法是三层循环暴力遍历即可。但是这一般不是我们相要的答案。
和3sum问题相比,其实我们可以发现这个问题是比3sum问题更简单的。同样是遍历所有三元组,这个问题不需要考虑三元组去重的问题,而且一旦找到等于target的结果即可返回,不要全部遍历完。
所以可以直接套用解决3sum问题时的遍历办法进行遍历。首先为了更好地遍历,对输入数组进行排序,而且我们假定三元组中元素是升序的,具体遍历时,先固定第一个元素(最小元素),再通过左右指针从数组的头尾分别遍历第二和第三个元素。如果当前结果相对target偏小,那么左指针向右移动,如果偏大,那么右指针向左移动,直到左右指针相遇。在整个遍历过程记录最接近的结果。如果遇到等于target的情况,则可以直接返回。
具体看代码。

我的代码

#include <algorithm>

using namespace std;

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        vector<int> my_nums(nums.begin(), nums.end());
        sort(my_nums.begin(), my_nums.end());
        int cur_min = 1000000;
        int ans;
        for (int i = 0; i < my_nums.size() - 2; i++) {
            int left = i + 1;
            int right = my_nums.size() - 1;
            int new_target = target - my_nums[i];
            while (left != right) {
                int cur = new_target - my_nums[left] - my_nums[right];
                if (cur > 0) {
                    left++;
                    if (cur < cur_min) {
                        cur_min = cur;
                        ans = target - cur;
                    }
                } else if (cur < 0) {
                    right--;
                    if (-cur < cur_min) {
                        cur_min = -cur;
                        ans = target - cur;
                    }
                } else {
                    return target;
                }
            }
        }
        return ans;
    }
};

阅读官方题解

没有官方题解,网上题解的思路和我的思路差不多。

思想核心总结

3sum是一类问题,核心是如何高效地遍历三元组。关键点是三元组排序,然后固定第一个元素,对第二和第三个元素通过左右指针从头尾两边向内进行遍历。

AgentScope实战训练营- Java从零开始快速构建Agent完整教程 本文基于阿里巴巴开源的 AgentScope Java 框架,从零开始手把手带你构建 AI 智能体应用。内容涵盖环境搭建、基础对话、工具调用、结构化输出、多Agent流水线、Hook可观测性、会话持久化、MCP协议、RAG知识库集成、多模态工具、技能系统、Spring Boot Web部署等21个核心模块,附带完整可运行代码示例,帮助Java开发者快速掌握Agent开发全流程。 阅读详情

相关推荐

定时器(PWM输出)触发ADC采样(DMA)——STM32CubeMX

已知 Tclk 为 84MHz , 我们需要 Tout 为 200ms 即 200000us , 不妨先让PSC为 839, 带入上述公式可得 ARR = 19999. 这样算出来之后ARR和PSC都在0~65535的范围, 则可以使用这组参数。例如,如果时钟频率为1MHz,并且PSC设置为1000,则实际的定时频率将为1kHz。当重装载值(Period 或 ARR)设置为 500 时,意味着定时器需要计数 500 个时钟周期才会触发中断。例如,如果时钟频率为1MHz,则Tclk为1微秒。

2301_77123899的博客 1万+

[leetcode] 16. 3Sum Closest 解题报告

题目链接:https://leetcode.com/problems/3sum-closest/ 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 integ

小榕流光的专栏 566

神经网络(十五)在VS Code下搭建PyTorch环境

pytorch在vscode中的配置和使用

就随便写写.... 5万+

【LeetCode】16. 3Sum Closest 解题报告(Python)

题目分析: 这道题目与3Sum很类似,只是让返回与目标最接近的结果,所以比3Sum难一些,我们可以考虑3Sum的解法同时加入一个变量记录和与目标的差值。 代码说明: 1、这是存储返回的最接近的三个数的和他们与目标的差值 res = nums[0] + nums[1] + nums[2] min_c = abs(target - res) 2、如果差值小于最小差值,更新差值与返回值。 if cha ...

L141210113的专栏 307

1.深入浅出:理解三极管截止、放大和饱和状态!——参考《模拟电子技术基础》清华大学华成英主讲

幼儿园水平理解三极管截止、放大和饱和状态!书上看不懂,听课听不懂的过来! 绕不开的三极管结构 以NPN为例,晶体三极管的结构,这是很多人不想看的,但是确实是非常重要的!不看结构是理解不了工作原理的! (这样记忆:N是negative,负,代表多子为电子;P是positive,正,代表多子为空穴) 注意观察三极管的结构,有助于理解工作时的状态。 两张图结合起来看,略作解释: 1.图中空心为空穴带正...

Hardware_harder的博客 4万+

Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明

Utrust4701F与Utrust2700R读写器支持银河麒麟系统,广泛应用会员管理、支付管理等领域。本文将重点介绍Utrust4701F与Utrust2700R读写器在银河麒麟系统的安装及测试步骤说明。以上方法适用于主流国产操作系统,如 优麒麟(UbuntuKylin)/ 中标麒麟(NeoKylin) / UOS(统信操作系统)/ 中兴新支点 / 红旗 linux(redflag linux)/ 普华 Linux(I-soft OS) / 威科乐恩 Linux(WiOS)等

华翔天诚科技 1834

leetcode(16) 3Sum Closest解题报告

链接:https://leetcode.com/problems/3sum-closest/ 题目:16. 3Sum Closest  Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return th

菜鸟很菜的专栏 667

九齐NY8A051F低功耗模式全解析:从待机到休眠的省电实战

本文全面解析台湾九齐NY8A051F MCU的低功耗模式,从待机到休眠的省电实战技巧。通过实测数据展示四种工作模式的电流消耗差异,提供模式切换的标准流程和唤醒时序优化策略,并分享外围电路省电设计和低电压检测的实战应用,帮助开发者实现物联网设备的超长续航。

weixin_30839881的博客 411

[Leetcode] 16. 3Sum Closest 解题报告

题目: 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 hav

魔豆(Magicbean)的博客 382

探索如何利用CST和ADS进行DDR的SIPI联合仿真

本文系统介绍了CST和ADS两款工具进行DDR信号完整性/电源完整性(SI/PI)联合仿真的方法。CST采用工作室协同方式,通过PCB布局导入、材料设置、模型分配等步骤,重点分析了电源阻抗优化和信号波形质量。ADS则利用SIPro、PIPro等专用工具,突出系统级验证和自动化优化功能。两者各有优势:CST擅长3D结构精确建模,ADS更适于快速系统验证。文章建议可根据项目需求混合使用两种工具,并提供了模型简化、频带选择等实用技巧。通过对比分析,为工程师选择仿真工具提供了决策参考。

一只豌豆象的博客 1150

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

weixin_69237381的博客 911

LeetCode 16. 3Sum Closest 题解

本题是三数之和问题的变种,主要考察对排序和双指针技巧的理解和使用。通过排序和双指针,我们可以有效地找到与目标值最接近的三数之和。排序的核心思想是将数组按照升序排列,这样我们可以使用双指针来高效地查找和调整三数之和。双指针的核心思想是:通过移动左指针和右指针,我们可以根据当前和与目标值的关系来调整指针的位置,从而找到最接近的和。这种方法不仅适用于最接近的三数之和问题,还可以应用于许多其他需要查找最接近值的问题。掌握排序和双指针的使用,对于解决这类问题非常重要。

cannonjinx的博客 4297

OpenCV简单应用:图像模糊处理

OpenCV是一个广泛使用的开源计算机视觉库,提供了丰富的图像处理和计算机视觉算法。本文将介绍如何使用OpenCV对图像进行模糊处理,并提供相应的源代码。该函数接受两个参数:第一个参数是输入图像,第二个参数是指定模糊核大小的元组。在这个例子中,我们使用了一个5x5的模糊核。您可以尝试不同大小的模糊核,以获得不同程度的模糊效果。函数和指定不同大小的模糊核,我们可以实现不同程度的模糊效果。该函数接受两个参数:第一个参数是窗口的名称,第二个参数是要显示的图像。在上面的代码中,我们首先使用。要运行上述代码,请将。

MwgmPhilosophy的博客 290

【LeetCode】解题16:3Sum Closest

LeetCode解题 16:3Sum Closest Problem 16: 3Sum Closest [Medium]解题思路Solution (Java) Problem 16: 3Sum Closest [Medium] Given an array nums of n integers and an integer target, find three integers in nums s...

Fayedily的博客 197

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode:16. 3Sum Closest

LeetCode:16. 3Sum Closest Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may ass...

Wisimer 172

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode总结——从2Sum、3Sum、3Sum Closest、4Sum到kSum

leetcode求和问题描述(K sum problem): 给你一组N个数字(nums), 然后给你一个常数(target) ,我们的目标是在这一堆数里面找到K个数字,使得这K个数字的和等于target。 注意事项(constraints): 注意这一组数字可能有重复项:比如 1 1 2 3 , 求3sum, 然后 target = 6, 你搜的时候可能会得到 两组1 2 3, 1 2 3,1...

vivian_ll的博客 382

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【LeetCode】16. 3Sum Closest(Python)

Problem 最接近的三数之和 Algorithmic thinking 双指针法 Python3 solution #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 16. 最接近的三数之和 eg: target=3, list=[1,2,3,1] 最接近的值:1+1+2=4,返回整型数值:4 """ class Solution:...

E.W的博客 1170

leetcode16 3sum-closes

leetcode16 3sum-closest class Solution { public: int threeSumClosest(vector<int>& nums, int target) { int sum = 0; int sum_res = 0; sort(nums.begin(),nums.end());...

逸兴遄飞的专栏 186

LeetCode:16. 3Sum Closest(Medium)

1. 原题链接 https://leetcode.com/problems/3sum-closest/description/ 2. 题目要求 数组S = nums[n]包含n个整数,找出S中三个整数a,b,c,使得a+b+c=sum,sum最接近给定的目标整数target,返回sum。 3. 解题思路 采用与第15题相同的思路(第15题链接),不过要引入两个整型变量min和r...

aysk1112的博客 228

leetcode 16:3Sum Closest with python

import sys class Solution(object): def threeSumClosest(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ nums.sort()...

dxcve的博客 199

Leetcode 16. Closest 3 Sum

题目名称:16. Closest 3 Sum 难度:Medium 知识点:双指针 解题思路:这道题特点是只需返回最靠近的三个数字的和,因此我们可以对数组进行排序,排序之后遍历整个数组,其中的每个数字作为第一个数字,求其与目标和的差值,在剩余的数字中寻找最靠近的差值,因为数组已经排序,因此可以用双指针,计算每一组三个数字与目标值的距离,如果绝对值比较小,我们就存起来这个值。另外,如果第一个数字的三倍已经比目标和大或者相等了,那我们只要看当前数字和其后面两个数字就好,不需要双指针去寻找了,再有就是我们在调

weixin_54889359的博客 283

LeetCode-16. 3Sum Closest

Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would ...

qq_32350719的博客 209

【Array-medium】16. 3Sum Closest 三个数相加和接近目标值

1. 题目原址 https://leetcode.com/problems/3sum-closest/ 2. 题目描述 3. 题目大意 给定一个一维数组和一个目标值,返回和最接近目标值的和。 4. 解题思路 二分法来做。 先将一维数组排序 然后第一个元素+最后一个元素+中间元素的和与目标值进行比较。按照比较结果继续遍历。 5. AC代码 class Solution { public...

想当厨子的程序媛 300

leetcode 16. 3Sum Closest

leetcode 16. 3Sum Closest题目链接:input:output:特殊情况:解题思路code 题目链接: https://leetcode.com/problems/3sum-closest/ input: nums = [-1, 2, 1, -4], target= 1 output: 2 即 (-1 + 2 + 1 = 2). 特殊情况: 输入列表中包含重复值,如nums...

jiang_yq的专栏 261

Leetcode 16. 3Sum Closest

https://leetcode.com/problems/3sum-closest/ #include<algorithm> using namespace std; class Solution { public: void _sum(vector<int>& nums,int l,int &ans,int target,int x,int n)...

weixin_33819479的博客 102

[LeetCode] (medium) 16. 3Sum Closest

https://leetcode.com/problems/3sum-closest/ Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three i...

Frontier_Setter的博客 164
上一篇: leetcode解题报告11. Container With Most Water
下一篇: leetcode解题报告14. Longest Common Prefix
sysu_xiaoming
博客等级 码龄10年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值