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

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

[Leetcode] 15. 3Sum

2019-11-14 09:07:33
字體:
來源:轉載
供稿:網友

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
韩日欧美一区二区| 在线观看国产精品91| 亚洲国产日韩欧美综合久久| 欧洲永久精品大片ww免费漫画| 在线看欧美日韩| 91久久久国产精品| 欧美中文字幕视频在线观看| 亚洲精品美女网站| 国产精品大陆在线观看| 久久成人在线视频| 国产精品视频一区二区高潮| 91精品国产综合久久香蕉的用户体验| 国产精品99久久久久久久久| 精品中文字幕视频| 亚洲国产精品女人久久久| 欧美日韩在线观看视频| 热久久这里只有| 欧美二区在线播放| 国产亚洲激情在线| 欧美大片免费观看| 精品动漫一区二区三区| 日本成人精品在线| 国产精品人成电影| 这里只有精品视频在线| 91精品国产综合久久久久久蜜臀| 成人淫片在线看| 92国产精品久久久久首页| 亚洲最大福利视频| 亚洲毛片一区二区| 色妞欧美日韩在线| 欧美精品成人91久久久久久久| 成人看片人aa| 91免费版网站入口| 国产日韩欧美在线视频观看| 中文字幕欧美精品日韩中文字幕| 欧美日韩亚洲一区二区三区| 欧美中文字幕视频| 国产999在线| 久久久免费精品| 欧美激情一区二区三区成人| 亚洲精品视频在线播放| 国产精品久久久久久久久免费| 日韩亚洲精品电影| 午夜精品视频网站| 国产日韩欧美成人| 曰本色欧美视频在线| 成人黄色免费看| 蜜月aⅴ免费一区二区三区| 亚洲男人天堂2019| 欧美色欧美亚洲高清在线视频| 国产性色av一区二区| 国内精品免费午夜毛片| 久久色精品视频| 欧美xxxx14xxxxx性爽| 中文字幕日本欧美| 日韩av电影在线网| 国产亚洲精品久久久| 国产伦精品一区二区三区精品视频| 久久视频在线免费观看| 精品国产欧美一区二区五十路| 欧美性一区二区三区| 日韩日本欧美亚洲| 国产成人+综合亚洲+天堂| 日韩风俗一区 二区| 欧美亚洲在线播放| 日韩不卡在线观看| 国内精品久久久久久久久| 亚洲free性xxxx护士hd| 欧美性猛交xxxx免费看久久久| 久久成人18免费网站| 国产精品白嫩初高中害羞小美女| 性日韩欧美在线视频| 久久久免费av| 国产999精品视频| 国产精品27p| 国产亚洲精品美女久久久| 国产精品国产三级国产aⅴ浪潮| 国产亚洲欧洲在线| 最新中文字幕亚洲| 日韩小视频在线| 日韩电影中文字幕在线| 91影视免费在线观看| 欧美日韩福利在线观看| 亚洲最大的av网站| 亚洲香蕉av在线一区二区三区| 久久精品国产成人| 久久韩剧网电视剧| 亚洲精品久久久久久久久久久| 国产大片精品免费永久看nba| 亚洲精品在线看| 亚洲人成电影网站| 亚洲色图五月天| 久久久视频精品| 欧美日韩在线影院| 国产欧美日韩高清| 欧美精品激情blacked18| 欧美精品一二区| 亚洲女人初尝黑人巨大| 91久久国产精品91久久性色| 国内外成人免费激情在线视频| 日韩欧美一区二区三区久久| 色偷偷av一区二区三区| 欧美电影免费观看网站| 日韩黄色高清视频| 日产日韩在线亚洲欧美| 欧美日韩在线视频一区| 亚洲免费视频一区二区| 亚洲美女av在线| 欧美成人精品在线视频| 色偷偷888欧美精品久久久| 一本色道久久综合亚洲精品小说| 精品国产一区二区三区久久久| 久久亚洲私人国产精品va| 日韩精品中文字幕在线播放| 美女精品久久久| 亚洲剧情一区二区| 国产精品午夜国产小视频| 国产精品96久久久久久又黄又硬| 日韩中文字幕在线视频播放| 亚洲国产天堂久久综合网| 欧美日韩福利电影| 在线播放日韩专区| 97免费视频在线播放| 国产精品老女人精品视频| 国产欧美一区二区三区在线看| 2019av中文字幕| 久久久精品免费| 欧美在线性视频| 另类色图亚洲色图| 欧美日韩在线观看视频| www.欧美三级电影.com| 国产精品国产福利国产秒拍| 国产精品视频99| 久久久久久久久久久久av| 色偷偷噜噜噜亚洲男人| 久热精品视频在线观看| 亚洲国产精品国自产拍av秋霞| 在线播放日韩精品| 欧美激情18p| 国产成人午夜视频网址| 992tv在线成人免费观看| 亚洲第一区中文字幕| 欧美一级电影在线| 不卡毛片在线看| 国产精品久久久久久久电影| 亚洲欧美国产制服动漫| 久久久999成人| 亚洲美女免费精品视频在线观看| 国产欧洲精品视频| 精品国产福利在线| 欧美精品电影在线| 精品呦交小u女在线| 亚洲成人中文字幕| 亚洲字幕在线观看| 成人xvideos免费视频| 欧美激情综合色| 97视频在线免费观看| 国产成人精品在线播放| 2019亚洲男人天堂| 国内精品中文字幕| 亚洲风情亚aⅴ在线发布| 久久在精品线影院精品国产| 久久精品国产清自在天天线| 一区二区三区四区在线观看视频|