iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

704 Binary Search

  • 在排序陣列中找到目標值,若存在回傳 index,不存在回傳 -1。
  • kotlin
class Solution {
    fun search(nums: IntArray, target: Int): Int {
        var left = 0
        var right = nums.size - 1
        while (left <= right) {
            val mid = left + (right - left) / 2
            when {
                nums[mid] == target -> return mid
                nums[mid] < target -> left = mid + 1
                else -> right = mid - 1
            }
        }
        return -1
    }
}

  • follow up
    • 如果陣列有重複值,要找第一個或最後一個出現的 index?(改成 lower_bound / upper_bound)
    • 如果資料是無限流(Infinite Array Search),如何應對?(先 exponential search 找邊界,再 binary search)
    • 如果陣列大小非常大,如何降低 磁碟 IO 或網路存取次數?(B-Tree / 分段 binary search)

上一篇
#06
系列文
來都來了-涮就涮吧8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言