Leetcode 15.三数之和

解法:两处去重+二分法

python 复制代码
class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        res = []
        visited_numi = [] # 第一处去重
        for i in range(len(nums) - 2):
            if nums[i] not in visited_numi:
                visited_numi.append(nums[i])
                sortnums = nums[i+1: ]
                l, r = 0, len(sortnums) - 1
                while r > l:
                    if sortnums[l] + sortnums[r] == - nums[i]: 
                        res.append([nums[i], sortnums[l], sortnums[r]])
                        while l < r and sortnums[l + 1] == sortnums[l]: l += 1 # 第二处去重
                        while l < r and sortnums[r - 1] == sortnums[r]: r -= 1
                        l += 1
                        r -= 1
                    elif sortnums[l] + sortnums[r] > - nums[i]: r -= 1
                    else: l += 1
        return res
相关推荐
No0d1es13 分钟前
GESP CCF C++六级编程等级考试认证真题 2024年12月
开发语言·c++·算法·青少年编程·gesp·ccf·六级
长安051135 分钟前
面试经典题目:LeetCode134_加油站
c++·算法·面试
m0_6949380139 分钟前
Leetcode打卡:考场就坐
javascript·算法·leetcode
GISer_Jing1 小时前
前端Javascript数据结构与算法常见题目(二 **简单level**)
javascript·数据结构·算法
SchrodingerSDOG1 小时前
(补)算法刷题Day24: BM61 矩阵最长递增路径
数据结构·python·算法·矩阵
LIZHUOLONG11 小时前
用C语言实现线程池
java·c语言·算法
荒古前2 小时前
龟兔赛跑 PTA
c语言·算法
Colinnian3 小时前
Codeforces Round 994 (Div. 2)-D题
算法·动态规划
用户0099383143013 小时前
代码随想录算法训练营第十三天 | 二叉树part01
数据结构·算法