zoukankan      html  css  js  c++  java
  • 三数之和

    思路:先固定一个数,然后剩下两个数用双指针,这样可以O(n2)时间完成

    class Solution(object):
        def threeSum(self, nums):
            """
            :type nums: List[int]
            :rtype: List[List[int]]
            """
            nums.sort()
            res = []
            
            for i in range(len(nums) - 2):
                if nums[i] >0:
                    break
                if i > 0 and nums[i] == nums[i-1]:
                    continue
                j = i + 1
                k = len(nums) - 1
                while j < k:
                    if nums[i] + nums[j] + nums[k] == 0:
                        res.append([nums[i], nums[j], nums[k]])
                        k -= 1
                        while j < k and nums[k] == nums[k+1]:k -= 1
                        j += 1
                        while j < k and nums[j]==nums[j-1]:j += 1
                    elif nums[i] + nums[j] + nums[k] > 0:
                        k -= 1
                        while j < k and nums[k] == nums[k+1]:k -= 1
                    else:
                        j += 1
                        while j < k and nums[j]==nums[j-1]:j += 1
            return res
    
  • 相关阅读:
    Angular2使用boostrap和ng-bootstrap总结
    Java
    Java
    Java 13
    Java 12
    Java 11
    Java 9
    Java 8- Java 分支结构
    Java 7-Java 循环结构
    Java 6- Java 运算符
  • 原文地址:https://www.cnblogs.com/dolisun/p/11537486.html
Copyright © 2011-2022 走看看