zoukankan      html  css  js  c++  java
  • leetcode------3Sum

    标题: 3Sum
    通过率:  16.9%
    难度: 中等

    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:

    • Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)
    • 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)

    从本题开始用python做题;

    前面做过一个2sum用的是map方法,这次用的是一个适合与Ksum的方面。基础依然是2sum

    2sum用两个指针进行做,start指针指向开头,end指针指向结尾开始匹配,

    对于3sum就是加一层循环,从第零个位置开始,进入到2sum时是从第一个开始

    对于4sum就是在2sum外面加两层

    一次类推

    代码如下:

     1 class Solution:
     2     # @return a list of lists of length 3, [[val1,val2,val3]]
     3     def threeSum(self, num):
     4         num.sort()
     5         ans = []
     6         target=0
     7         for i in range(0, len(num)):
     8             l, r = i + 1, len(num) - 1
     9             while l < r:
    10                 sum = num[i] + num[l] + num[r] 
    11                 if sum == target:
    12                     tmp=[num[i], num[l], num[r]]
    13                     if tmp not in ans:
    14                         ans.append(tmp)
    15                     l, r = l + 1, r - 1
    16                 elif sum < target:
    17                     l = l + 1
    18                 else:
    19                     r = r - 1   
    20         return ans
  • 相关阅读:
    算法: 整数中1出现的次数(从1到n整数中1出现的次数)
    健身:肩部训练
    算法: 字符串的排列
    不能浮躁,还是需要沉淀;
    算法:从上往下打印二叉树
    健身:手臂训练
    抛出错误
    记录错误
    调用栈
    try/except/finally
  • 原文地址:https://www.cnblogs.com/pkuYang/p/4403413.html
Copyright © 2011-2022 走看看