二分法

本文僅為作者自學(xué)之用苇侵,系統(tǒng)為macOS祈争,不保證信息準(zhǔn)確。
用題型來分的話荸恕,二分法可以簡(jiǎn)單分為兩種:

  1. 對(duì)于一個(gè)沒有重復(fù)的有序數(shù)列咽笼,需要用二分法找到某一個(gè)數(shù)的準(zhǔn)確位置;
int start = 0;
int end = nums.length;
while(start <= end){
  mid = start + (end - start)/2;
  if(nums[mid]==target){
    return mid;
  }
  if(nums[mid] > target){
    end = mid - 1;
  }
  if(nums[mid] < target){
    start = mid + 1;
  }
}
return start;

這個(gè)時(shí)候的start的位置滿足以下條件:

  • 假如存在target戚炫,那么start就是target的位置
  • 假如不存在target剑刑,那么start的位置就是第一個(gè)大于target的數(shù)的位置;
  • 假如不存在target双肤,而且數(shù)組末尾數(shù)也比target小施掏,那么start就是數(shù)組的長(zhǎng)度(也就是數(shù)組末尾數(shù)的角標(biāo)數(shù)+1)

為什么start是這個(gè)結(jié)果呢?需要自己窮舉各種不同的輸入來看茅糜,發(fā)現(xiàn)輸出都滿足同一種結(jié)論

2.對(duì)于一個(gè)有重復(fù)的有序數(shù)列七芭,用二分法尋找第一個(gè)大于等于target的數(shù)的位置;

int start = 0;
int end = nums.length;
while(start < end){
  mid = start + (end - start)/2;
  if(nums[mid] < target){
    start = mid + 1;
  }
  else{
    end = mid;
  }
}
return start;

這個(gè)程序返回的是第一個(gè)大于等于target的數(shù)的位置蔑赘。

  • 如果最小的數(shù)都比target大狸驳,則start為0
  • 如果最大的數(shù)都比target小,則start = end = 數(shù)組長(zhǎng)度
  • 如果數(shù)組中存在target缩赛,則指向第一個(gè)target(重復(fù)的話)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末耙箍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酥馍,更是在濱河造成了極大的恐慌辩昆,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旨袒,死亡現(xiàn)場(chǎng)離奇詭異汁针,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)砚尽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門施无,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人必孤,你說我怎么就攤上這事猾骡。” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵卓练,是天一觀的道長(zhǎng)隘蝎。 經(jīng)常有香客問我,道長(zhǎng)襟企,這世上最難降的妖魔是什么嘱么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮顽悼,結(jié)果婚禮上曼振,老公的妹妹穿的比我還像新娘。我一直安慰自己蔚龙,他們只是感情好冰评,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著木羹,像睡著了一般甲雅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坑填,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天抛人,我揣著相機(jī)與錄音,去河邊找鬼脐瑰。 笑死妖枚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苍在。 我是一名探鬼主播绝页,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼寂恬!你這毒婦竟也來了续誉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤掠剑,失蹤者是張志新(化名)和其女友劉穎屈芜,沒想到半個(gè)月后郊愧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朴译,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年属铁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眠寿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡焦蘑,死狀恐怖盯拱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤狡逢,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布宁舰,位于F島的核電站,受9級(jí)特大地震影響奢浑,放射性物質(zhì)發(fā)生泄漏蛮艰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一雀彼、第九天 我趴在偏房一處隱蔽的房頂上張望壤蚜。 院中可真熱鬧,春花似錦徊哑、人聲如沸袜刷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)著蟹。三九已至,卻和暖如春梢莽,著一層夾襖步出監(jiān)牢的瞬間草则,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工蟹漓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留炕横,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓葡粒,卻偏偏與公主長(zhǎng)得像份殿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗽交,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一維數(shù)組 首先開始最基本的Binary Search, 數(shù)組是有序的卿嘲,但是有重復(fù)數(shù)。例題: Search for ...
    dol_re_mi閱讀 2,402評(píng)論 0 2
  • Swift的二分法查找實(shí)踐 在這篇教程中我們會(huì)使用計(jì)算機(jī)科學(xué)里一個(gè)基礎(chǔ)的算法:二分法查找binary search...
    不是謝志偉閱讀 1,949評(píng)論 1 5
  • 1.二分法查找夫壁。 思想:假設(shè)數(shù)據(jù)是按升序排序的拾枣,對(duì)于給定值 x,從序列的中間位置開始比較盒让,如果當(dāng)前位置值等于 x梅肤,...
    Themores閱讀 509評(píng)論 0 1
  • 前言 今天在LeetCode遇到一個(gè)這樣的題目. 題目意思就是給一個(gè)排好序的數(shù)組和要尋找的數(shù),若數(shù)組存在邑茄,返回它的...
    mapleYe閱讀 554評(píng)論 0 0
  • 滇嶺巍峨姨蝴,瀘沽秀麗,霽霞蔥蔚蒼山肺缕。 橫斷蛟龍左医,看盡碧翠峰巒授帕。 颙望竹澗蝴蝶眼,似天泉浮梢,剔透冰寒跛十。 入佛都,崇圣三樓...
    沙柳胡楊閱讀 350評(píng)論 0 4