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

16. 最接近的三数之和(中)

时间:2024-01-26 17:22:46浏览次数:16  
标签:tmp right target nums 三数 16 ret 接近 left

目录

题目

  • 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。
    返回这三个数的和。
    假定每组输入只存在恰好一个解。

示例 1:

输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。

示例 2:

输入:nums = [0,0,0], target = 1
输出:0

题解:排序+双指针

class Solution:
    def threeSumClosest(self, nums, target):
        ret = float('inf')#设置返回值,初始化为无穷大
        nums.sort()#先将nums排序
        for i in range(len(nums)-1):
            left = i + 1
            right = len(nums)-1
            while left < right:
                tmp = nums[i] + nums[left] + nums[right]
                ret = tmp if abs(tmp - target) < abs(ret - target) else ret#比较ret和tmp+nums[i],哪个更接近target,并赋值给ret
                if tmp == target:#找到了三个数等于target直接返回target
                    return target
                elif tmp > target:#如果tmp > target - nums[i],将right -= 1
                    right -= 1
                else:#如果tmp < target - nums[i],将left -= 1
                    left += 1
        return ret

标签:tmp,right,target,nums,三数,16,ret,接近,left
From: https://www.cnblogs.com/lushuang55/p/17989826

相关文章

  • P1563 [NOIP2016 提高组] 玩具谜题
    1.题目介绍2.题解2.1模拟思路有一个大坑,题目给你的小人顺序是按逆时针给的,不是顺时针!!!跟顺时针相比掉一下顺序就行。看似一共有四种情况:[0,0],[0,1],[1,0],[1,1],其实可以简化分为两种情况,因为[0,0]和[1,1]都代表你要顺时针数,[1,0],[0,1]都代表你要逆时针数代码#include<b......
  • 167. 两数之和 II - 输入有序数组(中)
    目录题目题解:双指针题目给你一个下标从1开始的整数数组numbers,该数组已按非递减顺序排列,请你从数组中找出满足相加之和等于目标数target的两个数。如果设这两个数分别是numbers[index1]和numbers[index2],则1<=index1<index2<=numbers.length。以长度......
  • 幻兽帕鲁有多火?!腾讯云联机服务器卖爆啦!4核16G官方推荐,限时特惠(内含教程)
    腾讯云4核16G仅需66元/月,适合用来搭建幻兽帕鲁服务器,支持32人专用服务器要自建幻兽帕鲁(Palworld)的服务器,可以采取以下步骤:获取服务器软件:首先,您需要在Steam库中搜索"PalworldDedicatedServer",或者在"工具"选项中选择进行搜索以找到该软件。下载并安装服务器软件:找到并下载所......
  • POJ1416 (dfs)
    POJ1416(dfs)公司现在要发明一种新的碎纸机,要求新的碎纸机能够把纸条上的数字切成最接近而不超过target值(可以选择不切割)。比如,target的值是50,而纸条上的数字是12346,应该把数字切成四部分,分别是1、2、34、6。因为这样所得到的和43(=1+2+34+6)是所有可能中最接近而不超......
  • hey_left 16 Codeforces Round 827 (Div. 4)
    题目链接A.判最大的数是不是另外两个数的和#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;voidsolve(){inta,b,c;cin>>a>>b>>c;cout<<(max({a,b,c})==a+b+c-max({a,b,c})?"YES":"......
  • 15. 三数之和(中)
    目录题目题解:排序+双指针题目给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:......
  • Codeforces 1667E Centroid Probabilities
    这个连边方式就可以理解为\(1\)为根,点\(u\)的父亲\(fa_u\)满足\(fa_u<u\)。重心有不止一种表示法,考虑用“子树\(siz\ge\lceil\frac{n}{2}\rceil\)最深的点”来表示重心。令\(m=\lceil\frac{n}{2}\rceil\),\(f_i\)为节点\(i\)的\(siz\gem\)的方案数。考虑枚......
  • 用于汽车类有刷直流电机、电磁阀,DRV8316CTQRGFRQ1、DRV8143SQRXYRQ1、DRV8242SQRHLRQ1
    1、DRV8316CTQRGFRQ1 具有集成电流检测功能、峰值电流为8A的汽车级三相电机驱动器电机类型-步进:多相电机类型-AC,DC:无刷DC(BLDC)功能:驱动器-全集成,控制和功率级输出配置:半桥(3)接口:PWM技术:NMOS步进分辨率:应用:-电流-输出:8A电压-供电:4.5V~35V电压-负载:4.5V~35V工作......
  • 16、std::forward与完美转发详解
    概述std::forward是C++11中引入的一个函数模板,用于实现完美转发(PerfectForwarding)。它的作用是根据传入的参数,决定将参数以左值引用还是右值引用的方式进行转发。然而,完美转发是为了解决传递参数时的临时对象(右值)被强制转换为左值的问题。在C++03中,可以使用泛型引用来......
  • CodeForces 1667E Centroid Probabilities
    洛谷传送门CF传送门首先需要了解重心的三种定义:删掉一个点后剩下子树大小\(\le\frac{n}{2}\)的点\(\sum\limits_{i=1}^n\text{dis}(u,i)\)最小的点最深的\(sz_u\ge\left\lceil\frac{n}{2}\right\rceil\)的点这道题我们使用第三种定义,也就是要统计\(i\)为最......