您当前的位置: 首页 >  Python

Better Bench

暂无认证

  • 1浏览

    0关注

    695博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Leetcode刷题Python】15. 三数之和

Better Bench 发布时间:2022-07-19 23:51:06 ,浏览量:1

1 题目

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。如[[-1,0,1],[-1,0,1]] 示例 1:

输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]]

示例 2:

输入:nums = [] 输出:[]

示例 3:

输入:nums = [0] 输出:[]

2 解析

(1)排序 在这里插入图片描述 (2)初始化左右两个指针,用L和R表示,i是全局遍历的下标 在这里插入图片描述 三个数之和小于0,左指针加一 在这里插入图片描述 三个数之和小于0,左指针加一

在这里插入图片描述 三个数之和小于0,左指针加一 在这里插入图片描述 在这里插入图片描述 (3)i 往后遍历 三个数之和等于0,添加进返回列表,左指针加一,右指针减一 在这里插入图片描述 三个数之和等于0,添加进返回列表,左指针加一,右指针减一 在这里插入图片描述

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

注意:为了返回结果列表不重复,遍历到重复的元素时,需要跳过重复的元素

3 Python实现
    def threeSum(self, nums: List[int]):
        
        result = []
        if len(nums)  0 : break # 如果当前数字大于0,则三数之和一定大于0,所以结束循环
            if i>0 and nums[i]==nums[i-1]:continue
            while l            
关注
打赏
1665674626
查看更多评论
0.0402s