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
相关推荐
阳洞洞几秒前
leetcode 377. Combination Sum IV
算法·leetcode·动态规划·完全背包问题
阿巴~阿巴~41 分钟前
蓝桥杯 C/C++ 组历届真题合集速刷(一)
c语言·c++·算法·蓝桥杯
_x_w1 小时前
【12】数据结构之基于线性表的排序算法
开发语言·数据结构·笔记·python·算法·链表·排序算法
瀚海澜生1 小时前
链表系列入门指南(二):吃透这几题,链表解题不再难
后端·算法
爱编码的傅同学1 小时前
数据结构(五)——AVL树(平衡二叉搜索树)
数据结构·算法
Bonnie_12151 小时前
02-redis-数据结构实现原理
数据结构·redis·算法
Wood_Like1 小时前
从递归入手一维动态规划
算法·动态规划
爱奥尼欧2 小时前
算法竞赛中常用的数据处理库函数
算法
袖清暮雨2 小时前
【专题】贪心算法
算法·贪心算法
_Vinyoo2 小时前
算法——分治
数据结构·算法