時隔半年再次嘗試這題,當時做的太複雜
二分法注意細節:
1. 左右端點初始化時,右端點記得-1 l,r = 0, len(nums)-1
2. 二分查詢結束的判斷條件,記得加等號 while l <= r:
3. mid 的 賦值 mid = l + (r-l)//2 或者 mid = (l+r) //2
4. 二分法的跳出條件: if nums[mid] == taget: return mid
5. 判斷二分邊的時候,記得取端點,加等號
if nums[0] <= target < nums[mid]
if nums[ mid ] < target <= nums[-1]
如果不加,端點就取不到
本題細節:
1. 需要將 nums[0] == nums[mid] 與 nums[0] < nums[target] 兩種情況合併,因為mid取為左端點,一定不能忽略 nums[0] == nums[mid] 這種情況
二分法 33 搜尋旋轉排序陣列
給你乙個公升序排列的整數陣列 nums 和乙個整數 target 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請你在陣列中搜尋 target 如果陣列中存在這個目標值,則返回它的索引,否則返回 1 示例 1 輸...
33 搜尋旋轉排序陣列 二分法 旋轉陣列
題目實際考察的是二分法。雖然旋轉後的陣列是部分有序的,但是由於每次迭代都必然有一部分 左部分或者右部分 是有序的,此時可以判斷當前數是否在有序的那部分,進而控制上下界。package com.walegarrett.interview author walegarrett date 2021 2 2...
二分法 搜尋旋轉排序陣列
leetcode33 搜尋旋轉排序陣列 無重複元素 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你的演算法時間複雜度必須是 o lo...