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
相关推荐
凭君语未可12 分钟前
详解贪心算法
算法·贪心算法
NeVeRMoRE_202418 分钟前
【数据结构和算法实践-树-LeetCode110-平衡二叉树】
数据结构·b树·算法·leetcode
夜清寒风28 分钟前
opencv学习:calcHist 函数绘制图像直方图及代码实现
人工智能·opencv·学习·算法·计算机视觉
Miss Stone32 分钟前
对数器验证小和算法是否正确
算法
闲人编程1 小时前
Python实现优化的分水岭算法
python·算法·计算机视觉·优化·分水岭
一只邪恶大泡1 小时前
力扣14.最长公共前缀
数据结构·算法·leetcode
糖炒栗子要加糖1 小时前
论文阅读《Robust Steganography for High Quality Images》高质量因子图片的鲁棒隐写
图像处理·算法·安全
Java Fans2 小时前
Java 算法:随机抽题
java·python·算法
我是真爱学JAVA2 小时前
第四章 类和对象 实践与练习(1)
java·开发语言·算法
是小Y啦2 小时前
leetcode 146.LRU缓存
算法·leetcode·缓存