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
相关推荐
恶魔泡泡糖1 分钟前
51单片机矩阵按键
c语言·算法·矩阵·51单片机
叶子2024222 分钟前
电力系统分析---对称分量法
算法
圣保罗的大教堂37 分钟前
leetcode 3453. 分割正方形 I 中等
leetcode
千金裘换酒42 分钟前
LeetCode 二叉树的最大深度 递归+层序遍历
算法·leetcode·职场和发展
爱敲代码的TOM43 分钟前
详解一致性哈希算法
算法·哈希算法
lzllzz231 小时前
递归的理解
算法·深度优先·图论
小O的算法实验室1 小时前
2024年IEEE TITS SCI2区TOP,考虑无人机能耗与时间窗的卡车–无人机协同路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
派森先生1 小时前
排序算法-选择排序
算法·排序算法
C雨后彩虹1 小时前
书籍叠放问题
java·数据结构·算法·华为·面试
ghie90901 小时前
GPS抗干扰算法MATLAB实现
开发语言·算法·matlab