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

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

时间:2023-07-27 16:00:58浏览次数:30  
标签:None target nums 三数 16 abs vs threeSumClosest res

给你一个长度为 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
 

提示:

3 <= nums.length <= 1000
-1000 <= nums[i] <= 1000
-104 <= target <= 104


来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/3sum-closest
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

题解1:

执行用时:996 ms, 在所有 Python3 提交中击败了17.65%的用户 内存消耗:16.2 MB, 在所有 Python3 提交中击败了15.52%的用户 通过测试用例:99 / 99
class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        res = None
        nums.sort()
        nums_len = len(nums)
        ovi = None
        for i in range(0, nums_len - 2):
            vi = nums[i]
            if vi == ovi:
                continue
            ovi = vi
            j = i + 1
            k = nums_len - 1
            ovj = None
            ovk = None
            vs = None
            while j < k:
                vj = nums[j]
                if vj == ovj:
                    j = j + 1
                    continue
                vk = nums[k]
                if vk == ovk:
                    k = k - 1
                    continue
                    
                temp_vs = vi + vj + vk
                if vs is None:
                    vs = temp_vs
                else:
                    if abs(temp_vs - target) < abs(vs - target):
                        vs = temp_vs

                if temp_vs < target:
                    j = j + 1
                    ovj = vj
                elif temp_vs > target:
                    k = k - 1
                    ovk = vk
                else:
                    return target

            if res is None:
                res = vs
            else:
                abs_res = abs(res - target)
                abs_vs = abs(vs - target)
                if abs_vs < abs_res:
                    res = vs

        return res

标签:None,target,nums,三数,16,abs,vs,threeSumClosest,res
From: https://www.cnblogs.com/tros/p/17585205.html

相关文章

  • ChatGPT 在JavaScript中,由于Number类型只能表示52位精度,因此默认情况下无法进行超过16
    ChatGPT在JavaScript中,由于Number类型只能表示52位精度,因此默认情况下无法进行超过16位的乘法运算。但是,你可以使用BigInt来处理大数字。BigInt是目前JavaScript中处理超出Number精度限制的数字的最佳方式。它是一种新的数据类型,可以表示任意精度的整数。以下是一种解决方案:1.......
  • 安装nginx 1.16.1版本
    vi/etc/yum.repos.d/nginx.repo[nginx-stable]name=nginxstablerepobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.key[nginx-mainline]name=nginxmainlinerepoba......
  • Day16(2023.07.26)
    行程9:00 到达上海市徐汇区宛平南路1099号城建大厦9:45  与客户进行漏扫方面交流11:30--13:00   吃饭休息13:30         管理方面交流16:30         下班......
  • Oracle日常性能问题查看 转载 https://www.cnblogs.com/yhq1314/p/10601630.html
    1判断回滚段竞争的sql--当Ratio大于2时存在回滚段竞争,需要增加更多的回滚段)selectrn.name,rs.GETS,rs.WAITS,(rs.WAITS/rs.GETS)*100ratiofromv$rollstatrs,v$rollnamernwherers.USN=rn.usn;2判断恢复日志竞争的sql,这句有问题不能使用--immediate_con......
  • 中国16岁女高中生徐卓媛成功登顶珠穆朗玛峰,在赞叹之余,她的成功会带给您怎样的启示?
    近日看到这样一个帖子:https://www.zhihu.com/question/601227878     ===============================================  对此我的观点是,富人的努力总比穷人的努力抓人眼球。在世人眼中,穷人的努力就是为了解决温饱,为了生计,为了基本的生理需求,而富人的努力则是......
  • m基于16QAM软解调和LDPC信道编译码的通信链路误码率仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要基于16QAM软解调和LDPC信道编译码的通信链路包括以下主要步骤: 2.1数据源编码       在数据源编码阶段,输入的二进制数据会被编码为纠错码,以提高数据传输的可靠性。常用的纠错码包括卷积码、L......
  • 2167 - 树的公共祖先(LCA)
    题目描述给定一棵树和两个不同的结点,求出他们最近的公共祖先父结点。已知该树有n个结点,标号1..n。输入第1行输入一个整数nn,代表结点数量(n≤100)第2行输入两个整数x,yx,y,表示需要计算的结点;以下n−1行,每行两个整数a和b,表示a的父结点是b。输出输......
  • 东方博宜 2166 - 子树的大小及深度
    题目描述现在有一棵n个结点的树,结点1为这棵树的根,结点1的深度为1,求出每棵子树的大小及每个结点的深度。比如,有如下图所示的树:该树中:结点1对应的子树大小为6,深度为1。结点2对应的子树大小为5,深度为2。结点3对应的子树大小为1,深度为3。结点4对应的子......
  • 15. 三数之和
    给你一个整数数组 nums ,判断是否存在三元组 [nums[i],nums[j],nums[k]] 满足 i!=j、i!=k 且 j!=k ,同时还满足 nums[i]+nums[j]+nums[k]==0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums=[-1,0,1,2,......
  • 金融领域:产业链知识图谱包括上市公司、行业和产品共3类实体,构建并形成了一个节点10w+
    金融领域:产业链知识图谱包括上市公司、行业和产品共3类实体,构建并形成了一个节点10w+,关系边16w的十万级别产业链图谱包括上市公司所属行业关系、行业上级关系、产品上游原材料关系、产品下游产品关系、公司主营产品、产品小类共6大类。上市公司4,654家,行业511个,产品95,559条、上......