第5章 第11節 查找

●   手寫代碼:二分查找的代碼

參考回答:

int binarySearch(vector<int> x,int t){int mid,l=0;int u = x.size()-1;while(l<=u){mid = l+(u-l)/2;if(x[m]<t)l=m+1;else if(x[m]>t)u=m-1;elsereturn m;}



return -1;//沒有找到對應的元素,返回-1.


}

●   一個二維座標系,給你n個點的座標,畫一條直線把他們分成兩份(任意直線),要求數量儘量等分,複雜度不能太高。

參考回答:


我下意識覺得考察我圖論,想了一下感覺不是的,然後給他講了講我的思路:假設按照y座標分,那麼遍歷n個座標,用一個最大堆來保存,然後從頂部彈出n/2次,如果當前頂部的數和最後彈出的數不一樣,就可以在中間畫一條線)他說如果所有點縱座標都一樣呢?如果有點重合的呢?(我有點矇蔽了,覺得我這思路是錯的,又想了幾分鐘其他的方法,又不由自主往圖論上想,最後還是沒想起來。其實貌似再同樣做法對橫座標處理一次應該可以避免他說的問題吧),最後問他怎麼做,他說用二分的思想,然後對橫縱座標求中位數、衆數什麼的。 

圖片


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章