二十五、生產者消費者問題
阿新 • • 發佈:2022-05-20
思路
方法:二分搜尋
class Solution { public int search(int[] nums, int target) { int left, mid, right; left = 0; right = nums.length-1; while(left <= right) { if(nums[left] == target) return left; if(nums[right] == target) return right; mid = (left + right) / 2; if(nums[mid] == target) return mid; // 左半段是有序的 if(nums[left] < nums[mid]) { // 並且target位於有序的這左半段 if(nums[left] < target && target < nums[mid]) { right = mid - 1; } else { // 否則target在無序的右半段 left = mid + 1; } } else { // 右半段是有序的 // 並且target位於有序的這右半段 if(nums[mid] < target && target < nums[right]) { left = mid + 1; } else { // 否則target在無序的左半段 right = mid - 1; } } } return -1; } }
參考文章
搜尋旋轉排序陣列 - 搜尋旋轉排序陣列 - 力扣(LeetCode)中的視訊題解
搜尋旋轉排序陣列 - Java - 搜尋旋轉排序陣列 - 力扣(LeetCode)