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

    描述

    给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。
    在三元组(a, b, c),要求a <= b <= c。
    结果不能包含重复的三元组。

    样例

    如S = {-1 0 1 2 -1 -4}, 你需要返回的三元组集合的是:
    (-1, 0, 1)
    (-1, -1, 2)

    class Solution:
        """
        @param numbers: Give an array numbers of n integer
        @return: Find all unique triplets in the array which gives the sum of zero.
        """
        def threeSum(self, numbers):
            # write your code here
            length = len(numbers)
            if length < 3 : 
                return []
            results = []
            numbers.sort()
            for i in range(0, length-2):
                if numbers[i] > 0: 
                    break
                if i and numbers[i]==numbers[i-1]:
                    continue
                target = -numbers[i]
                left, right = i+1, length-1
                while left < right :
                    if numbers[right] + numbers[left] == target:
                        results.append([numbers[i], numbers[left], numbers[right]])
                        left += 1
                        right -= 1
                        while left < right and numbers[left] == numbers[left-1]: 
                            left += 1
                        while right < left and numbers[right] == numbers[right-1]: 
                            right -= 1
                    elif numbers[right] + numbers[left] < target:
                        left += 1
                        while left < right and numbers[left] == numbers[left-1]: 
                            left += 1
                    else:
                        right -= 1
                        while right < left and numbers[right] == numbers[right-1]: 
                            right -= 1
            return results
    
  • 相关阅读:
    变量与常量
    .面向过程和面向对象的区别
    .JDK,JRE,JVM三者关系
    DEV C++, 利用链表实现目录内所有文件列表显示
    swith的用法和注意事项?
    Java排序(一)实现类的排序
    C++数据结构——树(基础知识篇)
    杀进程
    监控 monitor java 代码
    putty 直接连 快捷键方式
  • 原文地址:https://www.cnblogs.com/narjaja/p/9791995.html
Copyright © 2011-2022 走看看