← 返回博客列表
Meta

Meta 面試:二分搜尋尋找局部最小值

2025-10-12

Meta 面試注重演算法變體和邊界處理。本文通過局部最小值問題,展示二分搜尋的靈活應用,oavoservice 助你掌握二分搜尋的精髓。

📋 題目描述

給定一個無序陣列,找到任意一個局部最小值的索引。

定義: arr[i] 是局部最小值,如果 arr[i] < arr[i-1]arr[i] < arr[i+1]。邊界元素只需要小於相鄰元素。

範例:

Input: [9, 6, 2, 14, 5, 7, 4]
Output: 2 (arr[2] = 2)

🎯 核心考點

  1. 二分搜尋變體 - 非單調陣列的二分
  2. 邊界處理 - 陣列邊界的特殊情況
  3. 時間複雜度 - O(log n) 解法
  4. 正確性證明 - 為什麼二分有效

💡 解題思路(oavoservice 指導)

方法:二分搜尋

def find_local_minimum(arr):
    n = len(arr)
    
    if n == 1: return 0
    if arr[0] < arr[1]: return 0
    if arr[n-1] < arr[n-2]: return n - 1
    
    left, right = 1, n - 2
    
    while left <= right:
        mid = (left + right) // 2
        
        if arr[mid] < arr[mid-1] and arr[mid] < arr[mid+1]:
            return mid
        
        if arr[mid] > arr[mid-1]:
            right = mid - 1
        else:
            left = mid + 1
    
    return -1

時間複雜度: O(log n) 空間複雜度: O(1)

🚀 關鍵洞察

為什麼二分有效? 如果 arr[mid] > arr[mid-1],左側必有局部最小值。 如果 arr[mid] > arr[mid+1],右側必有局部最小值。 每次都能排除一半的搜尋空間。

💼 oavoservice 助力

演算法變體 - 掌握二分搜尋的各種應用 正確性證明 - 清晰解釋演算法原理 邊界處理 - 完善的邊界條件 程式碼優化 - 簡潔高效的實作

聯繫 oavoservice,專業 VO 面試輔助!


標籤: #Meta #二分搜尋 #演算法變體 #VO輔助 #面試輔助 #一畝三分地


需要面試真題? 立刻聯繫微信 Coding0201獲得真題