35. Search Insert Position (搜索插入位置)

更新 發佈閱讀 1 分鐘


英文版點我中文版點我


↑看個小廣告,支持好內容↑



給定的陣列已經 sorted,又要求 O(logn) 執行完,沒有懸念就是 Binary Search 了,我們先套上大致的模板看看:

let left=0, right=nums.length-1;

while(left<right){
let mid=left+Math.floor((right-left)/2);
// 如果中間項仍小於目標,左半邊都不用找了
if(nums[mid]<target){
left=mid+1;
}else{
right=mid;
}
}


接下來才是重點,思考看看:這樣輸出的 left 會代表什麼?

left 代表的是「首個不小於目標的 index 值」,假設第一項就大於目標,自然插入的位置為 0,如果剛好等於目標,根據題意我們也要輸出 0,到這都沒問題。


考慮另一種極端狀況,要是最後一項都還小於目標呢?

nums=[1,3,5,6], target=7  // 輸出: 4​

那就形同要在陣列多 push 一項,而這和 left 回傳給我們的 3 不符了。


二分搜尋很常敗在這種邊界條件,請務必釐清 return 值是否滿足題意以及各種你舉得出的狀況 XD



  • 本題分類標籤:ArrayBinary Search
  • 本題正解率=45.6%

❤️ 若內容對你實用,歡迎追蹤本專題,或小額贊助支持~
⭐ 這是我的第 22 篇刷題筆記,完整解題索引看這裡 → Here


留言
avatar-img
留言分享你的想法!
avatar-img
LeetCode King
55會員
59內容數
我要成為 LeetCode 王!快跟我一起踏上旅程!
LeetCode King的其他內容
2024/01/22
給你一堆字母請你湊出單字,Scramble 貌似也是這樣玩的 (?
Thumbnail
2024/01/22
給你一堆字母請你湊出單字,Scramble 貌似也是這樣玩的 (?
Thumbnail
2023/12/19
成對的數字裡出現一個落單的邊緣人,我有六種方法找出它,你會幾種呢?
Thumbnail
2023/12/19
成對的數字裡出現一個落單的邊緣人,我有六種方法找出它,你會幾種呢?
Thumbnail
2023/11/08
總是記不順雙指針法的程序?畫圖跑一次給你看!
Thumbnail
2023/11/08
總是記不順雙指針法的程序?畫圖跑一次給你看!
Thumbnail
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
分享一個猜數字的遊戲題目,給予提示讓玩家找出正確的四位數密碼。
Thumbnail
分享一個猜數字的遊戲題目,給予提示讓玩家找出正確的四位數密碼。
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
給定一個輸入非負整樹陣列nums,請找出k值,使得陣列中恰好有k個元素大於等於 k。如果無解,回傳-1。尋找k值的方法包括排序法和二分搜尋法,時間複雜度都為O(n log n),空間複雜度為O(1)。關鍵知識點是當解空間具有遞增或遞減的性質時,可以用二分搜尋法加快搜尋效率。
Thumbnail
給定一個輸入非負整樹陣列nums,請找出k值,使得陣列中恰好有k個元素大於等於 k。如果無解,回傳-1。尋找k值的方法包括排序法和二分搜尋法,時間複雜度都為O(n log n),空間複雜度為O(1)。關鍵知識點是當解空間具有遞增或遞減的性質時,可以用二分搜尋法加快搜尋效率。
Thumbnail
在比賽裡這就是大家拚手速的題目了,準備好了嗎?
Thumbnail
在比賽裡這就是大家拚手速的題目了,準備好了嗎?
Thumbnail
魔鬼藏在二分搜尋裡!輸出值代表的意含、題意產生的邊界條件,寫完模板才是挑戰的開始 Orz
Thumbnail
魔鬼藏在二分搜尋裡!輸出值代表的意含、題意產生的邊界條件,寫完模板才是挑戰的開始 Orz
Thumbnail
題目已經給了依照起點升序排列好的區間陣列。 接下來新插入一個區間,插入後如果和原本的區間重疊,請把他們合併,要求我們輸出插入後的結果。 這是一個線性掃苗,所需時間為O(n)的演算法。 題目已經幫我們排序好區間順序,我們只要接著依序檢查區間、(假如有重疊的話)合併區間。
Thumbnail
題目已經給了依照起點升序排列好的區間陣列。 接下來新插入一個區間,插入後如果和原本的區間重疊,請把他們合併,要求我們輸出插入後的結果。 這是一個線性掃苗,所需時間為O(n)的演算法。 題目已經幫我們排序好區間順序,我們只要接著依序檢查區間、(假如有重疊的話)合併區間。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News