精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在數(shù)組中找到和為 “特定值” 的三個(gè)數(shù)?

開發(fā) 前端
前一段時(shí)間,我們介紹了LeetCode上面的一個(gè)經(jīng)典算法題【兩數(shù)之和問題】。這一次,我們把問題做一下擴(kuò)展,嘗試在數(shù)組中找到和為“特定值”的三個(gè)數(shù)。

 [[345646]]

前一段時(shí)間,我們介紹了LeetCode上面的一個(gè)經(jīng)典算法題【兩數(shù)之和問題】。

這一次,我們把問題做一下擴(kuò)展,嘗試在數(shù)組中找到和為“特定值”的三個(gè)數(shù)。

題目的具體要求是什么呢?給定下面這樣一個(gè)整型數(shù)組:

 

我們隨意選擇一個(gè)特定值,比如13,要求找出三數(shù)之和等于13的全部組合。

由于5+6+2=13, 5+1+7=13,3+9+1=13,所以最終的輸出結(jié)果如下:

【5, 6,2】

【5, 1,7】

【3, 9,1】

 

小灰的思路,是把原本的“三數(shù)之和問題”,轉(zhuǎn)化成求n次“兩數(shù)之和問題”。

 

我們以上面這個(gè)數(shù)組為例,選擇特定值13,演示一下小灰的具體思路:

第1輪,訪問數(shù)組的第1個(gè)元素5,把問題轉(zhuǎn)化成從后面元素中找出和為8(13-5)的兩個(gè)數(shù):

 

如何找出和為8的兩個(gè)數(shù)呢?按照上一次所講的,我們可以使用哈希表高效求解:

 

第2輪,訪問數(shù)組的第2個(gè)元素12,把問題轉(zhuǎn)化成從后面元素中找出和為1(13-12)的兩個(gè)數(shù):

 

第3輪,訪問數(shù)組的第3個(gè)元素6,把問題轉(zhuǎn)化成從后面元素中找出和為7(13-6)的兩個(gè)數(shù):

 

以此類推,一直遍歷完整個(gè)數(shù)組,相當(dāng)于求解了n次兩數(shù)之和問題。

 

 

  1. public static List<List<Integer>> threeSum(int[] nums, int target) { 
  2.        List<List<Integer>> resultList = new ArrayList<>(); 
  3.        for (int i = 0; i < nums.length; i++) { 
  4.            Map<IntegerInteger> map = new HashMap<>(); 
  5.            int d1 = target - nums[i]; 
  6.            //尋找兩數(shù)之和等于d1的組合 
  7.            for (int j = i+1; j < nums.length; j++) { 
  8.                int d2 = d1 - nums[j]; 
  9.                if (map.containsKey(d2)) { 
  10.                    resultList.add(Arrays.asList(nums[i], d2, nums[j])); 
  11.                } 
  12.                map.put(nums[j], j); 
  13.            } 
  14.        } 
  15.        return resultList; 
  16.    } 

在上面的代碼中,每一輪解決“兩數(shù)之和問題”的時(shí)間復(fù)雜度是O(n),一共迭代n輪,所以該解法總的時(shí)間復(fù)雜度是O(n²)。

至于空間復(fù)雜度,同一個(gè)哈希表被反復(fù)構(gòu)建,哈希表中最多有n-1個(gè)鍵值對(duì),所以該解法的空間復(fù)雜度是O(n)。

 

我們?nèi)匀灰灾暗臄?shù)組為例,對(duì)數(shù)組進(jìn)行升序排列:

 

這樣說起來有些抽象,我們來具體演示一下:

第1輪,訪問數(shù)組的第1個(gè)元素1,把問題轉(zhuǎn)化成從后面元素中找出和為12(13-1)的兩個(gè)數(shù)。

如何找出和為12的兩個(gè)數(shù)呢?我們?cè)O(shè)置兩個(gè)指針,指針j指向剩余元素中最左側(cè)的元素2,指針k指向最右側(cè)的元素12:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,2+12 = 14 > 12,結(jié)果偏大了。

由于數(shù)組是按照升序排列,k左側(cè)的元素一定小于k,因此我們把指針k左移一位:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,2+9 = 11< 12,這次結(jié)果又偏小了。

j右側(cè)的元素一定大于j,因此我們把指針j右移一位:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,3+9 = 12,正好符合要求!

因此我們成功找到了一組匹配的組合:1,3,9

但這并不是結(jié)束,我們要繼續(xù)尋找其他組合,讓指針k繼續(xù)左移:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,3+7 = 10< 12,結(jié)果偏小了。

于是我們讓指針j右移:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,5+7 = 12,又找到符合要求的一組:

1,5,7

我們繼續(xù)尋找,讓指針k左移:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,5+6 = 11< 12,結(jié)果偏小了。

于是我們讓指針j右移:

 

此時(shí)雙指針重合在了一起,如果再繼續(xù)移動(dòng),就有可能和之前找到的組合重復(fù),因此我們直接結(jié)束本輪循環(huán)。

第2輪,訪問數(shù)組的第2個(gè)元素2,把問題轉(zhuǎn)化成從后面元素中找出和為11(13-2)的兩個(gè)數(shù)。

我們?nèi)匀辉O(shè)置兩個(gè)指針,指針j指向剩余元素中最左側(cè)的元素3,指針k指向最右側(cè)的元素12:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,3+12 = 15 > 11,結(jié)果偏大了。

我們讓指針k左移:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,3+9 = 12 > 11,結(jié)果仍然偏大。

我們讓指針k繼續(xù)左移:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,3+7 = 10 < 11,結(jié)果偏小了。

我們讓指針j右移:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,5+7 = 12 > 11,結(jié)果又偏大了。

我們讓指針k左移:

 

計(jì)算兩指針對(duì)應(yīng)元素之和,5+6 = 11,于是我們又找到符合要求的一組:

2,5,6

我們繼續(xù)尋找,讓指針k左移:

 

此時(shí)雙指針又一次重合在一起,我們結(jié)束本輪循環(huán)。

按照這個(gè)思路,我們一直遍歷完整個(gè)數(shù)組。

像這樣利用兩個(gè)指針指向數(shù)組兩端,不斷向中間靠攏調(diào)整來尋找匹配組合的方法,就是雙指針法,也被稱為“夾逼法”。

 

 

  1. public static List<List<Integer>> threeSumv2(int[] nums, int target) { 
  2.     Arrays.sort(nums); 
  3.     List<List<Integer>> resultList = new ArrayList<List<Integer>>(); 
  4.     //大循環(huán) 
  5.     for (int i = 0; i < nums.length; i++) { 
  6.         int d = target - nums[i]; 
  7.         // j和k雙指針循環(huán)定位,j在左端,k在右端 
  8.         for (int j=i+1,k=nums.length-1; j<nums.length; j++) { 
  9.             // k指針向左移動(dòng) 
  10.             while (j<k && (nums[j]+nums[k])>d) { 
  11.                 k--; 
  12.             } 
  13.             //雙指針重合,跳出本次循環(huán) 
  14.             if (j == k) { 
  15.                 break; 
  16.             } 
  17.             if (nums[j] + nums[k] == d) { 
  18.                 List<Integer> list = Arrays.asList(nums[i], nums[j], nums[k]); 
  19.                 resultList.add(list); 
  20.             } 
  21.         } 
  22.     } 
  23.     return resultList; 

上面這段代碼表面上有三層循環(huán),但每一輪指針j和k的移動(dòng)次數(shù)加起來最多n-1次,因此該解法的整體時(shí)間復(fù)雜度是O(n²)。

最關(guān)鍵的是,該解法并沒有使用額外的集合(排序是直接在輸入數(shù)組上進(jìn)行的),所以空間復(fù)雜度只有O(1)!

本文轉(zhuǎn)載自微信公眾號(hào)「程序員小灰」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序員小灰公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 程序員小灰
相關(guān)推薦

2018-05-28 11:10:08

Linux命令IP地址

2021-01-17 16:26:19

JSONKey爬蟲

2022-05-27 11:59:22

Linux內(nèi)存CPU

2018-10-17 09:20:31

Linux命令重復(fù)文件

2011-05-25 13:37:15

數(shù)據(jù)庫

2020-04-08 10:42:14

多云云計(jì)算云開發(fā)

2022-12-12 11:14:06

LinuxID

2024-08-13 14:10:49

2009-08-10 19:30:09

運(yùn)維知識(shí)庫IT運(yùn)維管理廣通信達(dá)科技

2023-04-26 11:14:11

IT領(lǐng)導(dǎo)者遠(yuǎn)程工作

2009-03-19 10:40:02

職業(yè)分析經(jīng)驗(yàn)行業(yè)

2023-04-24 13:37:04

Unity游戲開發(fā)

2022-05-07 10:51:42

DevOps左移應(yīng)用程序

2011-12-20 10:41:36

程序員

2013-01-06 10:25:25

2023-03-16 15:13:41

缺失值據(jù)集中數(shù)據(jù)分析

2015-08-18 14:11:00

布線機(jī)柜數(shù)據(jù)中心

2020-06-11 09:00:27

SDN網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)

2022-02-15 22:32:19

GC虛擬機(jī)對(duì)象

2022-11-25 10:07:12

數(shù)倉數(shù)據(jù)流開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91麻豆精品国产91久久久资源速度| 久久亚洲免费视频| 欧美大片免费看| 亚洲麻豆一区二区三区| 亚洲女同av| 国产精品三级电影| 国产伦理一区二区三区| 精人妻无码一区二区三区| 亚洲成人tv| 国产丝袜精品视频| 国产精品自在自线| 忘忧草在线日韩www影院| 国产精品传媒在线| 久久99影院| 国产精品高潮呻吟av| 国产日韩欧美一区| 欧美大胆在线视频| 国产免费一区二区三区网站免费| 国产麻豆一区二区三区| 色综合色狠狠天天综合色| 99久re热视频精品98| 欧美男男同志| 成人视屏免费看| 国产剧情久久久久久| 自拍偷拍欧美亚洲| 亚洲精品网址| 中文字幕国产精品久久| 黄色a一级视频| 精品国产亚洲一区二区在线观看| 欧美视频专区一二在线观看| 国产九色porny| 在线看福利影| 亚洲少妇最新在线视频| 神马影院午夜我不卡影院| 无码国产精品高潮久久99| 国产成人av资源| 成人激情视频小说免费下载| 无码人妻精品一区二区三区不卡| 18成人免费观看视频| 欧美成人激情在线| 午夜剧场免费在线观看| 成人羞羞网站入口免费| 国产一区二区三区网站| 一级性生活大片| 久久精品色综合| 欧美v国产在线一区二区三区| 国产性生活一级片| 国产精品天堂蜜av在线播放 | japanese在线播放| 精品孕妇一区二区三区| 国产精品日韩精品欧美在线| 日本一区二区三区免费观看| 户外极限露出调教在线视频| 91免费观看视频| 久久er99热精品一区二区三区| 亚洲视频免费在线观看| 91精品视频观看| 中文字幕+乱码+中文乱码www| 麻豆成人精品| 国产成人在线一区| 中文字幕乱码中文字幕| 久久69国产一区二区蜜臀| 成人黄色网免费| 精品国自产在线观看| 国产白丝精品91爽爽久久| av资源一区二区| 可以免费观看的毛片| jlzzjlzz亚洲日本少妇| 久久日韩精品| 国产黄色在线| 136国产福利精品导航| 亚洲色图都市激情| av福利在线导航| 婷婷综合久久一区二区三区| 日韩精品一区二区三区不卡 | 亚洲成a人v欧美综合天堂| 国产高清av在线播放| 天堂中文最新版在线中文| 在线观看视频欧美| 99中文字幕在线| 久久影院资源站| 国产亚洲免费的视频看| 在线免费观看亚洲视频| 国产精品尤物| 国产男女猛烈无遮挡91| 性欧美videos另类hd| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美一进一出视频| 国产激情在线| 五月天丁香久久| www.天天射.com| 亚洲日本va| 亚洲小视频在线| 欧美日韩国产精品综合| 鲁大师成人一区二区三区| 91九色单男在线观看| 五月婷婷久久久| 亚洲欧美在线视频| 国模无码视频一区二区三区| 国产成人77亚洲精品www| 精品奇米国产一区二区三区| 五月天综合视频| 国产精品v一区二区三区| 国产精品扒开腿做爽爽爽的视频| 国产视频一区二区三| 91在线云播放| 亚洲国产精品女人| 精品亚洲美女网站| 日韩美女视频在线| 麻豆一区在线观看| 国产亚洲精品v| 99爱精品视频| 在线观看麻豆| 狠狠干狠狠久久| 国产chinesehd精品露脸| 成人免费在线观看av| 91国内在线视频| 精品国产乱码一区二区三| 国产女主播一区| av动漫在线看| 丁香综合av| 久久人人爽人人爽人人片亚洲| 午夜婷婷在线观看| 丁香激情综合五月| 国产高清免费在线| 青青伊人久久| 中文字幕精品av| 日本一本在线观看| ww久久中文字幕| 免费无遮挡无码永久视频| 亚洲天堂av资源在线观看| yw.139尤物在线精品视频| 少妇久久久久久久| 91香蕉视频mp4| 欧美亚洲日本一区二区三区| 日韩三级精品| 欧美精品中文字幕一区| 国产又粗又猛又色又| 国产精品污www在线观看| 成人羞羞国产免费网站| 青草久久视频| 91精品国产91久久久久久| 免费看黄色一级视频| 亚洲国产乱码最新视频| xxxxwww一片| 欧美涩涩网站| 国产精品久久久久免费| 成年人国产在线观看| 日韩精品一区二区三区老鸭窝| 中文字幕av免费在线观看| 国产一区二区三区综合| 亚洲av综合色区| 精品成人18| 欧美激情久久久| 男人天堂一区二区| 精品国产精品三级精品av网址| 国产激情视频网站| 男女精品网站| 午夜一区二区三区| 成人豆花视频| 欧美激情日韩图片| 亚洲色图21p| 在线免费精品视频| 久久嫩草捆绑紧缚| 国产精品123区| 男人添女人下面高潮视频| 久久超碰99| 成人欧美一区二区三区在线湿哒哒| 成人免费高清| 亚洲国产日韩精品在线| 黄色一级视频免费看| 国产精品久久久久桃色tv| 尤物网站在线看| 亚洲第一精品影视| 日产精品高清视频免费| 亚洲男人在线| 久久久在线免费观看| 色就是色亚洲色图| 欧美日韩成人在线| 久久在线视频精品| 久久久www成人免费毛片麻豆| 奇米视频888| 亚洲高清二区| 亚洲成人18| 亚洲一区二区三区免费| 日本亚洲欧洲色α| 蜜桃视频网站在线| 亚洲老头同性xxxxx| 一级黄色片免费看| 午夜精品一区二区三区电影天堂| 日本一卡二卡在线播放| 国产麻豆精品在线| 日韩中文字幕组| 欧美激情日韩| 色爱区成人综合网| 97久久综合精品久久久综合| 国产精品久久久久久久久免费看 | 国产一区二区三区四区五区| 91精品久久久久久久久久入口| av资源新版天堂在线| 丝袜亚洲欧美日韩综合| 全国男人的天堂网| 欧美顶级少妇做爰| 国产亚洲欧美在线精品| 一区二区三区在线免费视频| 在线免费观看黄色小视频| 国产精品996| 天天视频天天爽| 国产亚洲精品bv在线观看| 成年人深夜视频| 97精品一区二区| 日本免费一区二区三区| 粉嫩的18在线观看极品精品| 成人在线一区二区| 亚洲成a人片| 97香蕉久久夜色精品国产| 久操视频在线观看| 中文字幕亚洲综合| 欧美精品久久久久久久久久丰满| 精品少妇一区二区三区在线视频| 一区二区美女视频| 日本精品一级二级| 国产精品久久久久久久妇| 亚洲色图在线看| 亚洲精品天堂网| 久久精品人人爽人人爽| 自拍视频一区二区| 丰满亚洲少妇av| www.久久com| 国内欧美视频一区二区| 黄色片视频在线| 奇米888四色在线精品| av观看免费在线| 亚洲免费一区二区| 国产高清av在线播放| 亚洲大胆视频| 99热亚洲精品| 亚洲另类视频| 亚洲人成无码网站久久99热国产| 韩国av一区| 欧美激情亚洲天堂| 国产综合视频| 人妻无码久久一区二区三区免费| 精品福利av| 亚洲人精品午夜射精日韩| 亚洲激情国产| 日本十八禁视频无遮挡| 国产欧美日韩综合一区在线播放| 婷婷无套内射影院| av成人国产| 国产日产欧美视频| 日产国产高清一区二区三区| av网址在线观看免费| 日韩avvvv在线播放| 亚洲欧美久久久久| 国模大尺度一区二区三区| 日本女人黄色片| 成人黄页毛片网站| 中文字幕丰满孑伦无码专区| 91蜜桃婷婷狠狠久久综合9色| 老司机福利av| 亚洲国产成人午夜在线一区| 最新日韩免费视频| 亚洲精品视频在线看| 国产亚洲欧美久久久久| 疯狂欧美牲乱大交777| 无码人妻丰满熟妇区五十路| 欧美日韩情趣电影| 精品人妻一区二区三区三区四区| 欧美不卡一区二区| 欧洲毛片在线| 色爱av美腿丝袜综合粉嫩av| 黄色网页在线观看| 亚洲2020天天堂在线观看| 欧美极品免费| 91在线精品视频| 欧美freesex8一10精品| 相泽南亚洲一区二区在线播放 | 日韩a级黄色片| 韩日精品在线| 欧美日韩在线免费播放| 国产乱子轮精品视频| 国产精品第七页| 日韩一区在线看| 青青草成人av| 91福利区一区二区三区| 99在线观看免费| 日韩精品在线观看网站| 国内外激情在线| 欧美整片在线观看| 电影91久久久| 久久婷婷国产综合尤物精品| 婷婷综合五月| 116极品美女午夜一级| 黑人精品欧美一区二区蜜桃| 亚洲av无码一区二区三区网址 | 日本不卡一二三| 91免费的视频在线播放| 日韩动漫一区| 青青草原网站在线观看| 日韩精品电影一区亚洲| 一级黄色免费视频| 国产精品免费视频一区| 一区二区三区视频免费看| 91精品婷婷国产综合久久性色| 日韩欧美亚洲系列| 色综合久久久久久中文网| gogo亚洲高清大胆美女人体| 国产精品区一区二区三在线播放| 日韩欧美一区二区三区在线视频| 日韩精品―中文字幕| 国产精品系列在线播放| 成人在线观看免费高清| 欧美性xxxxx极品| 亚洲高清视频网站| 久久精品国产91精品亚洲| 欧美黑人粗大| 国产在线精品一区二区三区》| 影音先锋日韩在线| 成人性生交免费看| 国产欧美精品在线观看| 国产免费观看av| 亚洲国产第一页| 怡红院红怡院欧美aⅴ怡春院| 成人国产精品免费视频| 精品国产一区一区二区三亚瑟| 六月丁香激情网| 成人91在线观看| 国产精品自拍视频一区| 日韩欧美激情在线| 91精品久久| 成人免费视频a| 99精品视频在线| 欧美成人三级在线播放| 中文子幕无线码一区tr| 欧美一级黄视频| 亚洲一级免费视频| 日韩av超清在线观看| 欧美韩国日本精品一区二区三区| 99av国产精品欲麻豆| 性久久久久久久久久久| 亚洲成a人v欧美综合天堂| 色窝窝无码一区二区三区| 欧美精品久久久久久久免费观看| 麻豆精品国产| 欧美一二三不卡| 国产福利91精品| 国产一级免费av| 亚洲成av人片在线观看香蕉| heyzo中文字幕在线| 国产一区免费在线| 美女被久久久| 免费观看a级片| 欧美三级视频在线观看| 日本www在线| 亚洲综合自拍一区| 黄色欧美成人| 亚洲欧美日本一区| 欧美天堂在线观看| 成人资源www网在线最新版| 国产精品久久久久久久一区探花| 欧美色就是色| 中文字幕色网站| 亚洲综合视频网| 亚洲欧美日韩综合在线| 国产成人亚洲综合| 91青青国产在线观看精品| 免费精品99久久国产综合精品应用| 亚洲欧美电影一区二区| 二区三区在线视频| 欧美一区三区三区高中清蜜桃| 国产精品三级| 肉色超薄丝袜脚交| 午夜久久福利影院| 懂色av中文在线| 亚洲字幕一区二区| 国产农村妇女精品一二区| 日本污视频网站| 日韩欧美国产综合一区 | 色婷婷综合中文久久一本| 日韩在线免费电影| 国产精品日韩欧美一区二区三区| 丝袜a∨在线一区二区三区不卡| 亚洲av无一区二区三区| 亚洲国产成人精品久久| 成人激情视屏| 黄色www网站| 国产精品你懂的在线欣赏| 成人精品在线播放| 国产精品视频久久久久| 黄色成人精品网站| 国产精品久久久久久久av| 精品国产凹凸成av人导航| 成人在线高清| 日本午夜激情视频| 国产精品美女一区二区| 手机在线观看免费av| 91亚洲va在线va天堂va国| 久久亚洲电影| 久久久久亚洲av片无码下载蜜桃 |