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
相关推荐
ZPC82106 分钟前
规划后的轨迹,如何发给 moveit_servo 执行
c++·人工智能·算法·3d
70asunflower8 分钟前
5.4 分布分析
人工智能·算法·机器学习·数据挖掘·数据分析
Pkmer16 分钟前
滑动窗口专题
算法
Omics Pro18 分钟前
柳叶刀|参考文献不存在
人工智能·算法·机器学习·支持向量机·自然语言处理
初心未改HD23 分钟前
机器学习之K-Means聚类算法详解
算法·机器学习·kmeans
yugi98783826 分钟前
主动噪声控制中的 FXLMS 算法研究与 MATLAB 实现
开发语言·算法·matlab
Liangwei Lin31 分钟前
LeetCode 394. 字符串解码
数据结构·算法
YuanDaima204838 分钟前
动态规划基础原理与题目说明
数据结构·人工智能·python·算法·动态规划·手撕代码
大志出奇迹38 分钟前
传输协议为大端,STM32为小端,数据传输的字节序问题
c语言·stm32·单片机·mcu·算法·rtos
我爱cope40 分钟前
【滑动窗口:力扣438找到字符串中所有字母异位词】
算法·leetcode·职场和发展