双指针——最接近的三数之和,细节处理还是很关键的

59. 最接近的三数之和

中文
English

给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。

样例

例1:

输入:[2,7,11,15],3
输出:20
解释:
2+7+11=20

例2:

输入:[-1,2,1,-4],1
输出:2
解释:
-1+2+1=2

挑战

O(n^2) 时间, O(1) 额外空间。

注意事项

只需要返回三元组之和,无需返回三元组本身

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution:
    """
    @param numbers: Give an array numbers of n integer
    @param target: An integer
    @return: return the sum of the three integers, the sum closest target.
    """
    def threeSumClosest(self, numbers, target):
        # write your code here
        numbers.sort()
 
        s = diff = float('inf')
 
        def find_nearest(arr, k, t, n):
            nonlocal s,diff
            l, r = k, len(arr) - 1
            while l < r:
                if arr[l] + arr[r] > t:
                    if arr[l] + arr[r] - t < diff:
                        s = arr[l] + arr[r] + n
                        diff = arr[l] + arr[r] - t
                    r -= 1
                else:
                    if t - arr[l] - arr[r] < diff:
                        s = arr[l] + arr[r] + n
                        diff = t - arr[l] - arr[r]
                    l += 1
            return s
 
        for i, n in enumerate(numbers):
            if i > 0 and numbers[i] == numbers[i - 1]:
                continue
            find_nearest(numbers, i + 1, target - n, n)
 
        return s

 

posted @   bonelee  阅读(108)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2019-01-12 算法培训
2017-01-12 cassandra压力测试
2017-01-12 HBase Cassandra比较
2017-01-12 重新认识HBase,Cassandra列存储——本质是还是行存储,只是可以动态改变列(每行对应的数据字段)数量而已,当心不是parquet
2017-01-12 HBase底层存储原理——我靠,和cassandra本质上没有区别啊!都是kv 列存储,只是一个是p2p另一个是集中式而已!
2017-01-12 Cassandra 数据模型设计,根据你的查询来制定设计——反范式设计本质:空间换时间
2017-01-12 Cassandra key说明——Cassandra 整体数据可以理解成一个巨大的嵌套的Map Map<RowKey, SortedMap<ColumnKey, ColumnValue>>
点击右上角即可分享
微信分享提示