假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。
( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。
搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 -1 。
你可以假設陣列中不存在重複的元素。
輸入: nums = [4,5,6,7,0,1,2], target = 0
輸出: 4
輸入: nums = [4,5,6,7,0,1,2], target = 3
輸出: -1
【看到有序陣列就要想到二分查詢!!!!!】
【關於二分查詢的邊界,如果取等於,要對稱取!!!】
按照二分取邊界,如果left值小於mid,那麼說明左邊是遞增的,如果target值在兩者中間,則證明在左邊,反之在右邊。
如果right值大於mid,說明右邊遞增,如果target在兩者之間,則說明在右邊,反之在左邊。
public
intsearch
(int
nums,
int target)
int left =0;
int right = nums.length-1;
int mid;
while
(left<=right)
//前半部分有序
if(nums[left]
<=nums[mid]
)else
}//後半部分有序
else
else}}
return-1
;}
二分查詢 33 搜尋旋轉排序陣列
今天是2020年4月27日,星期一。今天的題目正好是我們前幾天學習的二分查詢,可以進一步鞏固學習內容。假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,...
33 搜尋旋轉排序陣列 C 二分查詢
題目詳情 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n ...
二分法 33 搜尋旋轉排序陣列
給你乙個公升序排列的整數陣列 nums 和乙個整數 target 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請你在陣列中搜尋 target 如果陣列中存在這個目標值,則返回它的索引,否則返回 1 示例 1 輸...