精品欧美一区二区三区在线观看 _久久久久国色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)

艳妇臀荡乳欲伦亚洲一区| 在线精品亚洲| 欧美一区二区视频在线观看2022| 91麻豆天美传媒在线| 少妇高潮一区二区三区99小说| 国产一级久久| 精品国模在线视频| 波多野结衣办公室双飞 | 97视频在线观看视频免费视频| 亚洲AV无码国产成人久久| 小说区图片区亚洲| 同产精品九九九| 欧美h视频在线观看| 性xxxfllreexxx少妇| 精品一区二区三区免费毛片爱| 久久久久久久一区二区| 中文天堂资源在线| 日韩精品福利一区二区三区| 91精品国产欧美一区二区成人 | 男人久久天堂| 亚洲视频一二区| 欧美日韩在线观看一区二区三区 | 国产一区二区三区免费观看| 欧美影院在线播放| 午夜69成人做爰视频| 精品久久网站| 亚洲欧美在线免费| 久草免费资源站| 日韩黄色在线| 91激情五月电影| 久久久久久久午夜| 青草在线视频| 亚洲婷婷在线视频| 五月天亚洲综合| 欧美色视频免费| 99热精品一区二区| 粉嫩av免费一区二区三区| 亚洲一区二区人妻| 视频一区视频二区在线观看| 97人人爽人人喊人人模波多 | 性开放的欧美大片| 国产亚洲精品精华液| 精品无码久久久久国产| 粉嫩av一区二区夜夜嗨| 国产精品123区| 亚洲综合小说区| 国产精品久久久久久久免费看| 男人操女人的视频在线观看欧美| 国产成人精品在线播放| 亚洲av无码不卡| 日韩精品久久理论片| 国产精品扒开腿做爽爽爽男男 | 日韩成人免费电影| 国产精品wwwwww| 国产情侣呻吟对白高潮| 日韩专区在线视频| 国产精品99久久久久久久久久久久| 黄色在线免费观看| 嫩草成人www欧美| 国产精品91视频| 又污又黄的网站| 精品一区二区三区日韩| 成人黄色网址| 国产精品自在| 欧美第一区第二区| 在线观看你懂的视频| 国产在线不卡一区二区三区| 制服丝袜亚洲播放| 99精品视频国产| 一本色道久久hezyo无码| 欧美一区一区| 欧美亚洲综合色| 日韩精品一区二区三区不卡| 亚洲校园激情春色| 在线免费观看成人短视频| 乌克兰美女av| www.久久爱.com| 欧美成人激情免费网| 国产黑丝在线观看| 国产最新精品| 久久久国产一区二区三区| 久久av高潮av无码av喷吹| 最新国产乱人伦偷精品免费网站| 青青草成人在线| 亚洲一级黄色大片| 国产激情精品久久久第一区二区| 国产精品免费观看高清| 美女做暖暖视频免费在线观看全部网址91| 国产视频一区在线观看| 一区二区视频在线播放| 国产精品偷拍| 色噜噜狠狠成人网p站| 九九久久久久久| 欧美美女在线直播| 色视频www在线播放国产成人| 国产第一页浮力| 国产一区二区三区久久| 国产精品久久99久久| 亚洲av无码一区二区三区性色 | 欧美日韩一区二区三区在线免费观看| 不卡av免费在线| 亚洲精品观看| 中文字幕欧美亚洲| 精品小视频在线观看| 免费在线成人网| 精品久久久久久一区二区里番| 91在线品视觉盛宴免费| 亚洲成人福利片| 亚洲天堂网2018| 日本中文字幕在线一区| 久久这里有精品| 美女又爽又黄免费视频| 国产乱码精品一区二区三| 欧美日韩一区二区视频在线观看| 深夜国产在线播放| 日本高清不卡视频| 催眠调教后宫乱淫校园| 亚洲一区色图| 国产精品入口夜色视频大尺度| 日本免费一区视频| 亚洲欧美欧美一区二区三区| 91小视频网站| 综合亚洲色图| 91高清视频免费观看| www.黄色片| 亚洲人成精品久久久久久| 男人的天堂日韩| 色综合中文网| 热re99久久精品国产66热| 亚洲狼人综合网| 亚洲精品乱码久久久久| 亚洲一二三不卡| 91一区在线| 国产精品十八以下禁看| 国产午夜精品一区理论片| 色一情一伦一子一伦一区| 李丽珍裸体午夜理伦片| 亚洲小说欧美另类婷婷| 91精品黄色| fc2ppv国产精品久久| 欧美精品视频www在线观看| 天天干天天操天天拍| 日韩av高清在线观看| 欧美久久久久久| 亚洲天堂免费电影| 亚洲精品理论电影| 日本少妇久久久| 91在线国产观看| 国产精品免费入口| 久久99高清| 国产精品国产自产拍高清av水多| 精品福利视频导航大全| 日本韩国欧美国产| 波多野结衣家庭教师在线观看| 日韩av午夜在线观看| 一本色道久久99精品综合| 亚洲不卡系列| www.欧美精品一二三区| 国产又粗又大又爽| 欧美国产在线观看| 日本中文字幕观看| 欧美精品成人| 九九九久久久| 欧美日韩亚洲国产| 久久精品99久久香蕉国产色戒| 国产精品欧美亚洲| 亚洲影视资源网| 久久人人爽人人爽人人片| 日韩午夜高潮| 亚洲女人被黑人巨大进入| 香蕉免费毛片视频| 97精品久久久久中文字幕 | 成人国产精品视频| 成人免费观看cn| 亚洲三级精品| 成人情趣片在线观看免费| av免费在线观看网址| 亚洲第一级黄色片| 中文字幕黄色片| 成人免费在线播放视频| 手机免费看av片| 日本美女视频一区二区| 丁香婷婷综合激情| 猛男gaygay欧美视频| 91精品久久久久久久久青青| 国产精品69xx| 色婷婷综合久久久久| 国产 日韩 欧美 综合| 色偷偷88欧美精品久久久| 一级性生活免费视频| 成人av网在线| 亚洲视频一二三四| 最新国产乱人伦偷精品免费网站| 亚洲成人午夜在线| 2023国产精华国产精品| 国产精品久久久久7777婷婷| 欧美性猛片xxxxx免费中国 | 国产伦精品一区二区三区| 无人区在线高清完整免费版 一区二| 久久成人精品电影| 久久精品色图| 日韩精品一区二区三区视频| 中文字幕 欧美激情| 精品久久在线播放| 欧美国产日韩在线观看成人| 久久久国产综合精品女国产盗摄| 久久久久久无码精品人妻一区二区| 久久亚洲欧美| 成人免费观看在线| 99久久99视频只有精品| 欧美日韩电影一区二区| 99久久婷婷国产综合精品青牛牛| 国产精品一久久香蕉国产线看观看| zzzwww在线看片免费| 精品久久久999| 岛国大片在线观看| 亚洲黄色免费三级| 国产xxxxxx| 欧美女孩性生活视频| 加勒比在线一区| 狠狠色狠狠色综合日日五| 激情综合网五月天| 亚洲人成精品久久久久| 亚洲女人毛茸茸高潮| 国产日韩视频一区二区三区| 亚洲精品女人久久久| 成人午夜激情片| 久久综合桃花网| 加勒比av一区二区| 自拍偷拍21p| 三级不卡在线观看| 亚洲午夜无码av毛片久久| 一区免费视频| 2019日韩中文字幕mv| 欧美日韩亚洲一区| 少妇一晚三次一区二区三区| 亚洲久久久久| 黄色免费高清视频| 久久精品国产大片免费观看| 婷婷四月色综合| 日韩成人免费| 尤物国产精品| 牛夜精品久久久久久久99黑人| 艳母动漫在线免费观看| 国产精品久久久乱弄| 少妇熟女一区二区| 一本一道久久综合狠狠老| 日本黄色播放器| 一个色综合网| 国产九色porny| 夜久久久久久| 超碰网在线观看| 日本亚洲最大的色成网站www| 校园春色 亚洲色图| 久久国内精品视频| 亚洲欧美日韩一二三区| 国产91精品免费| 亚洲av无码成人精品国产| 久久综合色8888| 久久精品三级视频| 亚洲视频香蕉人妖| 国产一级中文字幕| 欧美日韩综合视频| 成人毛片一区二区三区| 欧美日韩一本到| 精品黑人一区二区三区国语馆| 精品国产免费人成在线观看| 涩爱av在线播放一区二区| 亚洲欧美另类在线观看| 色大18成网站www在线观看| 欧美成人精品xxx| 丁香花电影在线观看完整版| 热久久免费视频精品| 国产第一精品| 成人资源av| 激情婷婷综合| 99久re热视频精品98| 亚洲成人资源| 日韩在线第三页| 国产乱人伦偷精品视频不卡| 精品人妻一区二区三区日产乱码卜| 国产视频视频一区| 男人操女人的视频网站| 天天色 色综合| 国产永久免费视频| 亚洲护士老师的毛茸茸最新章节| 大胆av不用播放器在线播放| 欧美肥老妇视频| 色婷婷综合久久久中字幕精品久久 | 日本成人看片网址| 国产精品麻豆久久| 91九色丨porny丨国产jk| 人人爽香蕉精品| 性欧美18—19sex性高清| 中文字幕的久久| 国产午夜小视频| 91精品啪在线观看国产60岁| 神马午夜一区二区| 久久久精品欧美| 欧美无毛视频| 国产精品久久亚洲7777| 青青一区二区三区| 少妇人妻在线视频| 国产一区美女在线| 免费看黄色的视频| 亚洲午夜免费视频| 国产精品乱码久久久| 精品一区二区三区四区在线| 性欧美ⅴideo另类hd| 国产又爽又黄的激情精品视频| 欧美重口另类| 国产黄色激情视频| 另类小说综合欧美亚洲| 亚洲精品视频久久久| 亚洲图片欧美色图| 国产精品久久久久毛片| 亚洲天堂av在线播放| 182在线视频观看| 91视频最新| 99精品美女| 嫩草av久久伊人妇女超级a| 成人av在线资源网站| 69xx绿帽三人行| 正在播放亚洲一区| 波多野结衣在线网站| 性亚洲最疯狂xxxx高清| 97超碰成人| 乱熟女高潮一区二区在线| 国精品**一区二区三区在线蜜桃| 国产三级av在线播放| 欧美午夜片欧美片在线观看| 婷婷丁香一区二区三区| 国内精品视频久久| 91蜜桃臀久久一区二区| 超薄肉色丝袜足j调教99| 久久精品国产精品亚洲综合| 东方伊人免费在线观看| 色偷偷成人一区二区三区91| 你懂的视频在线播放| 国产91对白在线播放| 一区二区美女| 92看片淫黄大片一级| 久久久久青草大香线综合精品| 永久免费无码av网站在线观看| 国产视频丨精品|在线观看| 成人免费网站观看| 久久久久一区二区| 免费日韩av片| x88av在线| 欧美日韩高清一区| 国产激情在线视频| 成人av免费电影| 亚洲精品1区2区| 一级黄色性视频| 欧美四级电影在线观看| 欧美日韩在线资源| 亚洲一区二区三区四区视频| 欧美福利在线| 少妇被狂c下部羞羞漫画| 天天综合色天天综合| 国产在线一在线二| 91精品久久久久久久久久久久久久 | 色偷偷偷综合中文字幕;dd| 四虎在线精品| 天堂8在线天堂资源bt| 91视频一区二区| 中文字幕+乱码+中文乱码www| 大量国产精品视频| 欧美日韩一区二区三区在线电影| 久久久久久久久久久久久久国产| 欧美极品aⅴ影院| wwwav在线播放| 日本久久精品视频| 91日韩在线| 国产乱了高清露脸对白| 欧美日韩一区二区三区不卡 | 亚洲字幕久久| 国产日韩视频一区| 色激情天天射综合网| 国产乱色在线观看| 精品国产一区二区三区四区精华 | 欧美疯狂做受xxxx富婆| 成年人视频免费在线播放| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 午夜国产在线视频| 国产伊人精品在线| 亚洲国产精品第一区二区| 色欲AV无码精品一区二区久久| 日韩午夜激情视频| 欧美日韩美女| av一区二区三区免费观看| 久久精品一区四区| 性一交一乱一伧老太| 国产精品爱啪在线线免费观看| 欧美日韩免费观看一区=区三区| 先锋影音av在线| 亚洲国产精久久久久久久| 精品福利在线| 3d动漫一区二区三区| 亚洲乱码中文字幕|