二分查詢(JS解法)——高頻面試演算法題(百度真題)
題目描述:
請實現有重複數字的有序陣列的二分查詢。
輸出在陣列中第一個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。
示例:
輸入
5,4,[1,2,4,4,5]
返回值
3
說明
輸出位置從1開始計算
我個人解法
/**
* 二分查詢
* @param n int整型 陣列長度
* @param v int整型 查詢值
* @param a int整型一維陣列 有序陣列
* @return int整型
*/
function upper_bound_( n , v , a ) {
// write code here
if(a[n-1] < v) {
return n+1;
}
var left = 0,right = n-1;
while(left < right) {
var mid = parseInt((left+right)/2);
if(v > a[mid]) {
left = mid+1;
} else {
right = mid;
}
}
return right+1;
}
解題思路:
- 用陣列最大數去判斷查詢值存不存在,若不存在的話直接按題目要求返回陣列長度+1。
- 然後就是按標準的二分查詢法去找查詢值。
- 這裡有一個值得注意的點是,題目要求返回的是第一個大於或者等於查詢值的位置,那麼我們只需要定位到大值為查詢值即可。返回這個值的位置,記得加一。
相關文章
- 百度的一道 java 高頻面試題的多種解法Java面試題
- Android 面試常見 - 二分查詢演算法題Android面試演算法
- 高頻面試題面試題
- MySQL高頻面試題MySql面試題
- Java高頻面試題---RabbitMQJava面試題MQ
- Java高頻面試題---MySQLJava面試題MySql
- Java集合高頻面試題Java面試題
- JavaScript高頻面試試題2——2020.12.04JavaScript面試
- 從阿里、騰訊的面試真題中總結了這11個Redis高頻面試題阿里Redis面試題
- 資料結構和演算法面試題系列—二分查詢演算法詳解資料結構演算法面試題
- LeetCode高頻演算法面試題 - 002 - 兩數相加LeetCode演算法面試題
- 前端高頻面試題JavaScript篇前端面試題JavaScript
- Selenium 高頻面試題及答案面試題
- 記錄一些js面試題以及解法JS面試題
- 高頻面試考題:荷蘭旗問題面試
- 「查缺補漏」高頻考點瀏覽器面試題瀏覽器面試題
- MySQL 高頻面試題,都在這了MySql面試題
- java框架面試高頻問題(SpringMVC)Java框架面試SpringMVC
- Java高頻面試題(2023最新整理)Java面試題
- 手寫題:9道字串類高頻面試題字串面試題
- 前端一面高頻面試題(附答案)前端面試題
- 014 Linux 線上高頻使用以及面試高頻問題——如何查詢大檔案並安全的清除?Linux面試
- 前端高階面試題@JS篇前端面試題JS
- 存下吧!Spring高頻面試題總結Spring面試題
- 「面試必問」leetcode高頻題精選面試LeetCode
- 中高階前端開發高頻面試題前端面試題
- Python高頻面試題解析公開課Python面試題
- 2023最新MySQL高頻面試題彙總MySql面試題
- 大廠面試經:高頻率JVM面試問題整理!面試JVM
- 熟悉這幾道 Redis 高頻面試題,面試不用愁Redis面試題
- 資料庫面試簡答、30道高頻面試題資料庫面試題
- 百度 Linux 運維工程師面試真題Linux運維工程師面試
- 查詢演算法__二分查詢演算法
- LeetCode簡單演算法題目-JS解法LeetCode演算法JS
- MySQL高頻面試題的靈魂拷問MySql面試題
- 高頻面試題:秒殺場景設計面試題
- 簡單說幾個MySQL高頻面試題MySql面試題
- 二分查詢 理論 例題