`
economist
  • 浏览: 6023 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

3Sum

 
阅读更多

 

问题描述

Given an array S of n integers, are there elements abc in S 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.

 

For example, given array S = [-1, 0, 1, 2, -1, -4],

A solution set is:
[
  [-1, 0, 1],
  [-1, -1, 2]
]

方案

def three_sum(nums):
    if not nums:
        return []
    length = len(nums)
    triples = []
    nums.sort()
    for i in range(length - 1):
        if i == 0 or (i != 0 and nums[i] != nums[i - 1]):
            s = 0 - nums[i]
            low = i + 1
            high = length - 1
            while low < high:
                tmp = nums[low] + nums[high]
                if tmp == s:
                    triples.append([nums[i], nums[low], nums[high]])
                    while low < high and nums[low] == nums[low + 1]:
                        low += 1
                    while low < high and nums[high] == nums[high - 1]:
                        high -= 1
                    low += 1
                    high -= 1
                elif tmp < s:
                    while low < high and nums[low] == nums[low + 1]:
                        low += 1
                    low += 1
                else:
                    while low < high and nums[high] == nums[high - 1]:
                        high -= 1
                    high -= 1
    return triples

print three_sum([-1, 0, 1, 2, -1, -4])

 

 

 

分享到:
评论

相关推荐

    3sum-hard问题的综述

    3Sum-Hard问题是由经典的3Sum问题扩展而来的,3Sum问题要求在一个整数数组中找到三个元素,使得它们的和等于一个给定的目标值。而3Sum-Hard问题则是在3Sum的基础上增加了一些复杂性和难度。 3Sum问题的基本算法通常...

    python数组双指针算法求和问题LeetCode2sum3sum4sum含代码

    本文将深入探讨如何使用Python实现双指针算法来解决LeetCode中的2sum、3sum和4sum问题,并提供相关代码示例。 首先,我们来看2sum问题。给定一个整数数组`nums`和一个目标值`target`,我们需要找到数组中两个数的...

    文档python数组双指针算法求和问题LeetCode2sum3sum4sum含代码

    本文档主要介绍了在Python编程语言中如何运用双指针算法解决LeetCode上的2Sum、3Sum及4Sum求和问题,并提供了相应的代码实现。LeetCode是一个非常受欢迎的在线编程平台,用于练习算法题目,尤其适合准备技术面试的...

    3sum.asm

    3sum.asm

    java-leetcode题解之015-3Sum

    java入门 java_leetcode题解之015_3Sum

    leetcode java 题解之 3Sum With Multiplicity.java

    java基础 leetcode java 题解之 3Sum With Multiplicity.java

    js-leetcode题解之15-3sum.js

    js js_leetcode题解之15-3sum.js

    C语言-leetcode题解之15-3sum.c

    c语言入门 C语言_leetcode题解之15-3sum.c

    3-sum算法求解 python

    标题中的“3-sum算法求解 python”指的是在Python编程语言中实现一个经典的计算机科学问题——三数之和(3Sum)问题。这个问题来源于算法和数据结构领域,通常出现在面试和编程竞赛中。它的核心是找到一个整数数组中...

    js-leetcode题解之16-3sum-closest.js

    js js_leetcode题解之16-3sum-closest.js

    leetcode.3sum-leetcode-practice:算法实践

    3sum leetcode-练习 算法实践 15. 3和 给定一个由 n 个整数组成的数组 nums,nums 中是否有元素 a、b、c 使得 a + b + c = 0? 在数组中找到所有唯一的三元组,其总和为零。 示例输入: [-1, 0, 1, 2, -1, -4] 示例...

    3Sum solution

    3sum problem and solution.

    sm3sum

    linux sm3sum工具 光盘sm3sum 使 ./sm3sum-帮助

    js代码-15. 3Sum

    3Sum" 是一个关于JavaScript编程的议题,它主要涉及算法和数据结构中的三数之和问题。在计算机科学中,这个问题通常出现在算法设计和面试准备中,用于测试候选人的逻辑思维和编程能力。 【描述】描述中的 "js代码...

    js代码-16. 3Sum Closest

    3Sum Closest" 指的是一个关于JavaScript编程的题目,具体来说是解决算法问题“找到数组中三个元素的和最接近目标值的组合”。这个问题源自计算机科学中的经典算法题,常在面试或编程竞赛中出现。描述中的 "3Sum ...

    leetcode3sum-LeetCode:leetcode问题用C#解决

    3sum 力码 力扣算法 (注:“ :locked: " 表示你需要来自 Leetcode) # 标题 解决方案 困难 001 简单的 002 中等的 003 中等的 004 难的 005 中等的 006 简单的 007 简单的 008 简单的 009 简单的 010 难的 011 中等...

    leetcode.3sum-leetcode:创建此存储库是为了发布各种leetcode问题的解决方案

    3sum # Leetcode 解决方案以下是我在 Leetcode 上解决的一些问题,如果你喜欢/找到任何你的答案,请留下一个星。 如果你想与我联系,我在下面分享了我的 Linkedin URL。 问题 # 标题 # 解决方案 困难 1 二和 简单...

    md5sum-code_md5sum_md5sum工具_

    3. `Md5Sum.h`: 这是一个头文件,可能定义了`Md5Sum.cpp`中用到的类或函数接口。 4. `makefile`: 这是一个构建文件,用于指示编译器如何编译和链接这些源代码文件,生成可执行的`md5sum`工具。 在实际使用中,`md5...

Global site tag (gtag.js) - Google Analytics