53尋找旋轉排序陣列中的最小值(153)
阿新 • • 發佈:2020-09-08
作者:
晚於: 2020-08-12 12:00:00後提交分數乘係數50%
截止日期: 2020-08-19 12:00:00
問題描述 :
假設我們的陣列是一個按照升序排序的陣列在預先未知的某個點上進行了旋轉得到的。
( 例如,陣列 [3,5,6,0,1,2] ,可以知道是從[0,1,2,3,5,6]旋轉變來的 )。
請找出其中最小的元素。要求使用二分查詢。
你可以假設陣列中不存在重複元素。
示例 1:
輸入: [3,4,5,1,2]
輸出: 1
示例 2:
輸入: [4,5,6,7,0,1,2]
輸出: 0
輸入說明 :
首先輸入陣列的長度n,然後輸入n個整數
輸出說明 :
輸出一個整數
輸入範例 :
輸出範例 :
#include <iostream> #include <vector> using namespace std; class Solution { public: int findMin(vector<int>& nums) { int begin=0,end=nums.size()-1; if(nums.size()==1) return nums[0]; if(nums[end]>nums[0]) return nums[0]; while(begin<=end) { int mid=(end+begin)/2; if(nums[mid]>nums[mid+1]) return nums[mid+1]; if(nums[mid-1]>nums[mid]) return nums[mid]; if(nums[mid]>nums[begin]) begin=mid+1; else end=mid-1; } return -1; } }; int main() { int n,data; vector<int> nums; cin>>n; for(int i=0; i<n; i++) { cin>>data; nums.push_back(data); } int res=Solution().findMin(nums); cout<<res<<endl; return 0; }
https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/solution/xun-zhao-xuan-zhuan-pai-lie-shu-zu-zhong-de-zui-xi/