亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

[Leetcode] 15. 3Sum

2019-11-14 10:31:44
字體:
來源:轉載
供稿:網友

PRoblem:

Given an array S of n integers, are there elements a, b, c 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] ]

思路 1. 暴力枚舉法+分類討論法。這種題直接暴力枚舉的話,時間復雜度高達O(n^3),所以我一開始對暴力枚舉加上了分類討論。三個數之和為0有以下幾種情況:

情況 負數個數 零個數 正數個數
1 2個 0個 1個
2 1個 0個 2個
3 1個 1個 1個
4 0個 3個 0個

因此,首先對輸入的數組進行“正數,零,負數”分類,然后再窮舉這四種情況的所有組合。最后發現,時間復雜度仍然接近O(n^3),這優化意義不大。

#Note: 以下兩種方法是題目“2sum”的延伸。“2sum”求的是:對于輸入的數組,求出兩數之和等于某特定值的所有組合。在這題目“3sum”中,因為題目是求a,b,c使得a+b+c=0,所以我們可以看作是求a,b使得a+b=-c。這樣其實就是窮舉版的“2sum”問題。 2. 借助hash表。對輸入的數組放入一個哈希表中,然后遍歷哈希表的每一個數a,然后調用2sum函數:新建一個用于標記的集合set,遍歷輸入數組的每一個值b(此時要去掉一個數a,因為數具有不可復用性),判斷集合set中是否存在一個數c,使得c = -a-b。如果有,則為目標答案,加到result list中;如果沒有,則把b數加入到集合set中。 這樣做的好處在于減少了一層循環,使得時間復雜度降為O(n^2),但同時空間復雜度是O(n)。另外,調用2sum函數時,也可以遍歷已建立好的hash表,可以更節省時間。不過需要注意的是要考慮[0,0,0]這種情況。 3. 雙向游標法。首先將輸入數組nums排序,然后遍歷輸入數組的每個數a作為target值,然后調用2sum函數:對于有序數組(除去數a),定義兩個指針指向首尾兩端,即,一個指向nums[0],一個指向num[len(nums)]。然后有如下三種情況: (1) 若當前和小于-a,則左指針右移; (2) 若當前和大于-a,則右指針左移; (3) 若當前和等于-a,則為目標答案。 這里排序的時間復雜度為O(nlogn),遍歷的時間復雜度為O(n^2),所以總的時間復雜度近似于O(n^2).

Solution :

方法2

# -*- coding: utf-8 -*-"""Created on Sat Feb 04 22:30:34 2017@author: liangsht"""def find2Sum(self,target,newdict): hashset = set() for item in newdict.keys(): remain = target - item if remain in hashset: if remain != item: self.myappend([-target,item,remain]) elif newdict[item] >= 2: self.myappend([-target,item,remain]) else: hashset.add(item)class Solution(object): res = [] def myappend(self,occupylist): occupylist.sort() if occupylist not in self.lll: self.res.append(occupylist) def threeSum(self, nums): self.res = [] numslen = len(nums) if numslen <= 2: return [] hashdict = dict() hashdict[int(nums[0])] = 1 for i in xrange(1, numslen): #construct a hash map for list nums if nums[i] in hashdict.keys(): hashdict[nums[i]] += 1 else: hashdict[nums[i]] = 1 for item in hashdict.keys(): if item == 0 and hashdict[item] >=3: self.myappend([0,0,0]) continue target = 0-item newdict = hashdict.copy() hashdict[item] -= 1 if hashdict[item] == 0: newdict.pop(item) find2Sum(self,target,newdict) return self.res

方法3

def threeSum(self, nums): res = [] nums.sort() for i in xrange(len(nums)-2): if i > 0 and nums[i] == nums[i-1]: continue l, r = i+1, len(nums)-1 while l < r: s = nums[i] + nums[l] + nums[r] if s < 0: l +=1 elif s > 0: r -= 1 else: res.append((nums[i], nums[l], nums[r])) while l < r and nums[l] == nums[l+1]: l += 1 while l < r and nums[r] == nums[r-1]: r -= 1 l += 1; r -= 1 return res

ref: 1. CSDN bolg 2. leetcode discussion


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产成人高清视频| 亚洲一区二区久久久| 国产日韩精品视频| 欧美日韩亚洲精品内裤| 日韩精品免费在线播放| 亚洲成色777777在线观看影院| 国产精品91久久久| 欧美激情久久久| 九九热最新视频//这里只有精品| www日韩欧美| 91久久精品国产91久久| www.久久久久| 美日韩丰满少妇在线观看| 国产精品偷伦一区二区| 久久福利视频网| 中文字幕日韩欧美在线| 久久综合久久88| 色综合影院在线| 日韩成人av网址| 亚洲精品欧美日韩专区| 成人黄色影片在线| 日韩国产高清污视频在线观看| 色偷偷偷综合中文字幕;dd| 国产精品亚洲аv天堂网| 国产做受高潮69| 日韩av电影手机在线观看| 成人xvideos免费视频| 久久精品青青大伊人av| 国产精品免费一区二区三区都可以| 日韩电影免费观看在线| 精品成人国产在线观看男人呻吟| 久久久国产91| 国产v综合v亚洲欧美久久| 日韩一区二区在线视频| 国产欧美日韩免费| 欧美精品www在线观看| 96sao精品视频在线观看| 国产欧美日韩高清| 日韩在线视频网| 在线观看视频99| 国内自拍欧美激情| 欧美精品电影在线| 亚洲成人激情图| 国产成人综合亚洲| 国产成人激情小视频| 琪琪亚洲精品午夜在线| 亚洲a中文字幕| 日韩美女在线观看| 欧美激情视频播放| 欧美一区在线直播| 色黄久久久久久| 亚洲美腿欧美激情另类| 国产精品av免费在线观看| 日韩中文在线视频| 在线成人免费网站| 中文字幕精品av| 久久久999精品免费| 国产精品久久久91| 欧美性极品xxxx做受| 亚洲性av网站| 国产成+人+综合+亚洲欧美丁香花| 欧美性猛交xxxx免费看久久久| 97视频色精品| 久久乐国产精品| 91中文在线视频| 精品福利一区二区| 欧美夫妻性视频| 国产成人a亚洲精品| 性欧美暴力猛交69hd| 中文字幕精品久久久久| 26uuu国产精品视频| 亚洲精品动漫100p| 欧美精品生活片| 中文字幕日韩精品有码视频| 欧美体内谢she精2性欧美| 91精品国产综合久久香蕉| 亚洲欧美精品suv| 日韩欧美在线中文字幕| 亚洲欧美精品伊人久久| 欧美精品在线网站| 一本色道久久88综合日韩精品| 国产精品一区二区性色av| 狠狠色狠狠色综合日日小说| 中文字幕亚洲激情| 国产噜噜噜噜久久久久久久久| 欧美肥臀大乳一区二区免费视频| 国产精品美女久久久久久免费| 国产成人精品免费视频| 欧美国产亚洲视频| 国产日韩欧美日韩大片| 精品一区二区三区电影| 亚洲美女av黄| 日韩欧美国产高清91| 欧美日韩精品在线观看| 亚洲高清免费观看高清完整版| 性色av一区二区三区免费| 久久夜色精品亚洲噜噜国产mv| 国产综合香蕉五月婷在线| 91精品国产自产在线老师啪| 亚洲电影中文字幕| 国产日韩欧美影视| 青青草精品毛片| 91精品国产高清久久久久久| 91在线色戒在线| 成人97在线观看视频| 国产精品99久久久久久久久久久久| 午夜精品一区二区三区在线播放| 亚洲www永久成人夜色| 欧美高清理论片| 日本午夜在线亚洲.国产| 亚洲国产精品久久久久秋霞蜜臀| 8x海外华人永久免费日韩内陆视频| 成人黄在线观看| 成人欧美一区二区三区黑人孕妇| 最新日韩中文字幕| 国产精品www网站| 国产噜噜噜噜久久久久久久久| 第一福利永久视频精品| 国产精品扒开腿做爽爽爽视频| 成人免费在线网址| 久久青草精品视频免费观看| 欧美高清性猛交| 欧美亚洲一级片| 中文字幕日韩精品在线| 亚洲无av在线中文字幕| 欧美成人中文字幕在线| 日韩激情av在线播放| www高清在线视频日韩欧美| 亚洲电影免费观看高清完整版在线| 久久久精品一区| 亚洲三级av在线| 国产欧美va欧美va香蕉在| 成人黄色免费片| 中文字幕久久亚洲| 成人av番号网| 亚洲人成欧美中文字幕| 欧美极品少妇xxxxⅹ免费视频| 青青青国产精品一区二区| 国产精品黄色影片导航在线观看| 国产成人涩涩涩视频在线观看| 亚洲国产小视频在线观看| 欧美成人午夜激情视频| 大桥未久av一区二区三区| 97人人模人人爽人人喊中文字| 亚洲福利视频免费观看| 欧美夫妻性生活xx| 777777777亚洲妇女| 在线看福利67194| 亚洲日本aⅴ片在线观看香蕉| 亚洲性猛交xxxxwww| 日韩精品999| 欧美电影在线免费观看网站| 亚洲 日韩 国产第一| 欧美日韩美女在线| 亚洲国产美女精品久久久久∴| 亚洲精品久久久久中文字幕欢迎你| 一区二区三区动漫| 国产精品视频26uuu| 日韩一区二区三区xxxx| 国产高清视频一区三区| 国产午夜精品理论片a级探花| 日韩av免费观影| 色偷偷88888欧美精品久久久| 欧美一区二粉嫩精品国产一线天|