去哪兒筆試題----二分查找

今天突然想創(chuàng)建一個文集,做一些公司筆試題小染,原因如下:
1芋绸、想鍛煉自己的變成能力耙厚。
2、逼迫自己刷題,以應(yīng)對找工作時的筆試攒暇。
今天是第一題卿城,就先來個簡單的程序园蝠,以后會持續(xù)堅持电湘。

題目:

對于一個有序數(shù)組,我們通常采用二分查找的方式來定位某一元素筐带,請編寫二分查找的算法今穿,在數(shù)組中查找指定元素。
給定一個整數(shù)數(shù)組A及它的大小n伦籍,同時給定要查找的元素val蓝晒,請返回它在數(shù)組中的位置(從0開始),若不存在該元素帖鸦,返回-1芝薇。若該元素出現(xiàn)多次,請返回第一次出現(xiàn)的位置富蓄。

import java.util.*;

public class BinarySearch {
    public int getPos(int[] A, int n, int val) {
        // write code here
    }
}

分析:

看到這道題目剩燥,第一感覺就是簡單,之前都是通過遞歸實現(xiàn)立倍,這次同樣想用遞歸來進(jìn)行實現(xiàn)灭红,但是細(xì)看后發(fā)現(xiàn)題目提供的方法傳遞的參數(shù)個數(shù)即類型不能使用遞歸,此時就想換循環(huán)來實現(xiàn)口注,到這里我就已經(jīng)被自己看到的和自己的想法給限制類思維变擒,因為之后想到,雖然他給了方法聲明寝志,沒說不可以再次聲明自己的方法娇斑。
然后就迅速使用遞歸實現(xiàn)了程序。

public class BinarySearch {
    
    public static void main(String[] args) {
        int[] a = new int[]{1,1,4,5,6};
        int po = new BinarySearch().getPos(a, a.length, 1);
        System.out.println(po);
    }
    
     public int getPos(int[] A, int n, int val) {
            
         return fun(A, val, 0, n-1);
      }
     
     public int fun(int[] A, int val, int start, int end){
         
         if(start > end){
             return -1;
         }
         int middle = (start + end)/2;
         if(val > A[middle]){
             start = middle + 1;
             return fun(A, val, start, end);
         }
         if(val < A[middle]){
             end = middle - 1;
             return fun(A, val, start, end);
         }
         if(val == A[middle]) {
            return middle;
        }
         return -1;
     }
}

提交程序材部,然后提交報錯毫缆。。乐导。說是使用[1,1,2]測試本應(yīng)返回0苦丁,結(jié)果卻返回1。當(dāng)時一臉懵逼物臂,在從讀題目旺拉,知道看到最后一句話“若該元素出現(xiàn)多次产上,請返回第一次出現(xiàn)的位置”。這句話很容易理解蛾狗,在程序中只需要每次判斷start下標(biāo)對應(yīng)的value是否和目標(biāo)value相等即可晋涣,所以在fun()方法中添加以下代碼。

 if(A[start] == val){
    return start;
}

提交結(jié)果正確沉桌,測試通過谢鹊。

參考答案:

public class BinarySearch {
    
    public static void main(String[] args) {
        int[] a = new int[]{1,1,4,5,6};
        int po = new BinarySearch().getPos(a, a.length, 1);
        System.out.println(po);
    }
    
     public int getPos(int[] A, int n, int val) {
            
         return fun(A, val, 0, n-1);
      }
     
     public int fun(int[] A, int val, int start, int end){
         
         if(start > end){
             return -1;
         }
         if(A[start] == val){
             return start;
         }
         int middle = (start + end)/2;
         if(val > A[middle]){
             start = middle + 1;
             return fun(A, val, start, end);
         }
         if(val < A[middle]){
             end = middle - 1;
             return fun(A, val, start, end);
         }
         if(val == A[middle]) {
            return middle;
        }
         return -1;
     }
}

感想:

1、不要別人沒有限制你的思維蒲牧,你自己卻給自己畫一個小圈撇贺。
2赌莺、不是你覺得簡單就真的簡單冰抢,往往細(xì)節(jié)決定成敗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末艘狭,一起剝皮案震驚了整個濱河市挎扰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巢音,老刑警劉巖遵倦,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異官撼,居然都是意外死亡梧躺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門傲绣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掠哥,“玉大人,你說我怎么就攤上這事秃诵⌒螅” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵菠净,是天一觀的道長禁舷。 經(jīng)常有香客問我,道長毅往,這世上最難降的妖魔是什么牵咙? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮攀唯,結(jié)果婚禮上洁桌,老公的妹妹穿的比我還像新娘。我一直安慰自己革答,他們只是感情好战坤,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布曙强。 她就那樣靜靜地躺著,像睡著了一般途茫。 火紅的嫁衣襯著肌膚如雪碟嘴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天囊卜,我揣著相機與錄音娜扇,去河邊找鬼。 笑死栅组,一個胖子當(dāng)著我的面吹牛雀瓢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播玉掸,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼刃麸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了司浪?” 一聲冷哼從身側(cè)響起泊业,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啊易,沒想到半個月后吁伺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡租谈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年篮奄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片割去。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡窟却,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出劫拗,到底是詐尸還是另有隱情间校,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布页慷,位于F島的核電站憔足,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酒繁。R本人自食惡果不足惜滓彰,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望州袒。 院中可真熱鬧揭绑,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至邦蜜,卻和暖如春依鸥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悼沈。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工贱迟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人絮供。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓衣吠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親壤靶。 傳聞我的和親對象是個殘疾皇子缚俏,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

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