LeetCode No.374 Guess Number Higher or Lower | #binary-tree

Q:

We are playing the Guess Game. The game is as follows:
I pick a number from 1 to n. You have to guess which number I picked.
Every time you guess wrong, I'll tell you whether the number is higher or lower.
You call a pre-defined API guess(int num)淮腾, which returns 3 possible results (-1, 1, or 0):
-1 : My number is lower 1 : My number is higher 0 : Congrats! You got it!
Example: n = 10, I pick 6.Return 6.

A:

Binary search二分法檢索時間復雜度O(log?2??n)六荒。(三分法worst case時間復雜度是O(log?3n))
先比較mid key,大了钓试,往mid后面找,小了往前面找斯棒。
每次没龙,沒找到链韭,重新設定邊界值start和end。

public int guessNumber(int n) {
    int start = 1, end = n;

    while(start < end) {
        int mid = start + (end - start) / 2;   //備注

        if(guess(mid) == 0) {
            return mid;
        } 
        else if(guess(mid) == 1) {  //說明target比mid值要大
            start = mid + 1;        //起點設置為mid后一位
        } 
        else {                    //說明target比mid值要小
            end = mid;            //終點設置為mid
        }
    }
    return start;
}

備注:不能寫成 mid = (start+end)/2浙垫,會integer overflow刨仑。
比如測試用例 (2126753390,1702766719):
overflow一開始不會夹姥,2126753390+1并沒有超過Integer最大值2147483647杉武,但是尋找的這個target=1702766719,那么需要重新設定start值=mid值(106337670)辙售,這是再計算(mid+end)/2轻抱,加法得到319013009超過了Integer的最大值,導致overflow旦部。如果mid+(end-mid)/2則不會祈搜。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市士八,隨后出現(xiàn)的幾起案子容燕,更是在濱河造成了極大的恐慌,老刑警劉巖婚度,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蘸秘,死亡現(xiàn)場離奇詭異,居然都是意外死亡蝗茁,警方通過查閱死者的電腦和手機醋虏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哮翘,“玉大人颈嚼,你說我怎么就攤上這事》顾拢” “怎么了阻课?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵叫挟,是天一觀的道長。 經(jīng)常有香客問我柑肴,道長霞揉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任晰骑,我火速辦了婚禮适秩,結果婚禮上,老公的妹妹穿的比我還像新娘硕舆。我一直安慰自己秽荞,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布抚官。 她就那樣靜靜地躺著扬跋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凌节。 梳的紋絲不亂的頭發(fā)上钦听,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音倍奢,去河邊找鬼朴上。 笑死,一個胖子當著我的面吹牛卒煞,可吹牛的內(nèi)容都是我干的痪宰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼畔裕,長吁一口氣:“原來是場噩夢啊……” “哼衣撬!你這毒婦竟也來了?” 一聲冷哼從身側響起扮饶,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤具练,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后甜无,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體靠粪,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年毫蚓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昔善。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡元潘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出君仆,到底是詐尸還是另有隱情翩概,我是刑警寧澤牲距,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站钥庇,受9級特大地震影響牍鞠,放射性物質發(fā)生泄漏。R本人自食惡果不足惜评姨,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一难述、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吐句,春花似錦胁后、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至文虏,卻和暖如春侣诺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氧秘。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工年鸳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人敏储。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓阻星,卻偏偏與公主長得像,于是被迫代替她去往敵國和親已添。 傳聞我的和親對象是個殘疾皇子妥箕,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

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

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,724評論 0 33
  • 思考:最初只是寫了第三種更舞,然后對與第一種后面的 if(j>Math.sqrt(i))System.out.prin...
    實在想不出昵稱丶閱讀 136評論 0 0
  • 硬要排的話畦幢,一命二運三貴人,四相五養(yǎng)六風水缆蝉,七積陰德八讀書宇葱,九取名字十敬神。積德之前全都不可控刊头,積德保證有好的人際...
    徐州風清揚閱讀 171評論 0 0
  • 亮度不知道要怎么打黍瞧,有大神指教嗎
    一只要上天的豬閱讀 136評論 0 1
  • 2017年已經(jīng)過了十一天了,這個時候才來寫下過去一年的總結原杂,好像確實晚了一點印颤,不過這也給了我清醒思考與總結的時間。...
    樂見其成閱讀 506評論 2 3