博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode15. 3Sum(思路及python解法)
阅读量:2241 次
发布时间:2019-05-09

本文共 870 字,大约阅读时间需要 2 分钟。

Given an array nums of n integers, are there elements abc in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

Note:

The solution set must not contain duplicate triplets.

Example:

Given array nums = [-1, 0, 1, 2, -1, -4],A solution set is:[  [-1, 0, 1],  [-1, -1, 2]]

判断数组中是否存在三个数的和为0,如果存在则把所有结果返回。

这里我利用双指针的方法。

先把数组排序,然后对于每个数nums[i],left和right两个指针分别指向nums[i+1]和nums[l-1]

如果三个数和为0则添加到final中,如果nums[i]>0或者全部遍历结束则返回final。

其他情况下则依次遍历。

注意sums==0时不能直接break,因为会出现不同数字和同样为0的情况,比如[[-1,-1,2],[-1,0,1]],break则会缺失后面的结果。

class Solution:    def threeSum(self, nums: List[int]) -> List[List[int]]:        final=[]        nums.sort()        l=len(nums)        for i in range(l):            left, right = i+1, l-1            if nums[i]>0:return final            if i!=0 and nums[i]==nums[i-1]:continue                        while left

转载地址:http://ocrbb.baihongyu.com/

你可能感兴趣的文章
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>