资讯专栏INFORMATION COLUMN

三元组相加获得结果最接近target

lmxdawn / 2901人阅读

摘要:三元组相加获得结果最接近给定一个数组,选择三个元素相加,结果必须为所有三元组中最接近的值,返回这个三元组的和。思路思路参照三元组相加获得只需要将上述文章思路中换成第二次循环找到三元组的和最接近的组合即可。代码本题以及其它题目代码地址地址

三元组相加获得结果最接近target 3SumClosest

给定一个数组,选择三个元素相加,结果必须为所有三元组中最接近target的值,返回这个三元组的和。

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 have exactly one solution.

example 1

For example, given array S = [-1, 2, 1, -4], and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

input: [-1, 2, 1, -4], 1
output: 2
思路

思路参照三元组相加获得target

只需要将上述文章思路2中换成:第二次循环找到 三元组的和 最接近target的组合即可。

代码
class Solution(object):
    def threeSumClosest(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        nums.sort()
        closest = nums[0] + nums[1] + nums[2]
        for i in range(len(nums)):
            j, k = i + 1, len(nums) - 1
            while j < k:
                value = nums[i] + nums[j] + nums[k]
                closest = value if abs(target - value) < abs(target - closest) else closest
                if value == target:
                    return target
                elif value > target:
                    k -= 1
                else:
                    j += 1
        return closest

本题以及其它leetcode题目代码github地址: github地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38668.html

相关文章

  • 三元相加获得target

    摘要:三元组相加获得给定一个数组,选择三个元素相加,结果为,找出所有符合的三元组思路乱序数组,需要找到所有组合,需要三层循环,复杂度为。需要避免重复的三元组被加入代码避免重复避免重复本题以及其它题目代码地址地址 三元组相加获得target 3Sum 给定一个数组,选择三个元素相加,结果为target,找出所有符合的三元组 Given an array S of n integers, ar...

    Joyven 评论0 收藏0
  • 四元相加获得target

    摘要:四元组相加获得给定一个数组,选择四个元素相加,结果为,找出所有符合的四元组。思路思路参照三元组相加获得多一层循环即可,注意边界检测即可。代码本题以及其它题目代码地址地址 四元组相加获得target 4Sum 给定一个数组,选择四个元素相加,结果为target,找出所有符合的四元组。 Given an array S of n integers, are there elements ...

    sunsmell 评论0 收藏0
  • JS算法题之leetcode(11~20)

    摘要:给定一个整数,将其转为罗马数字。字符数值例如,罗马数字写做,即为两个并列的。通常情况下,罗马数字中小的数字在大的数字的右边。给定一个罗马数字,将其转换成整数。注意空字符串可被认为是有效字符串。 JS算法题之leetcode(11~20) showImg(https://segmentfault.com/img/bVbwmfg?w=1790&h=714);这次的十道题目都比较容易,我们简...

    CoderDock 评论0 收藏0
  • AI是如何回答你提出的问题的?揭秘智能问答系统背后的深度学习网络

    摘要:人类如何回答问题在考虑设计一个问答系统之前,不妨先来考虑一下人类是如何回答问题的。问答的各个子系统都可以用深度学习实现。 摘要:随着人工智能和物联网技术的飞速发展和相互融合,越来越多的设备将会被植入问答AI,未来问答将会成为人机交互的重要入口,AI问答将会无处不在。那么AI是如何回答你所提出的问题的?本文就为你揭秘智能问题系统背后的深度学习网络架构设计以及原理。 本文内容由演讲嘉宾视频...

    curried 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<