154. 尋找旋轉排序陣列中的最小值 II Find Minimum in Rotated Sorted Array II
阿新 • • 發佈:2021-01-05
技術標籤:LeetCode
題目 <https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/>
我的判斷條件真多
#define min(a,b) ((a)<(b)?(a):(b)) int findMin(int* nums, int numsSize){ int left,right,mid; left=0;right=numsSize-1; //printf("%d,%d\n",left,right); if(left==right){ return nums[left]; } if(nums[left] < nums[right]){ return nums[left]; } mid = left + (right-left)/2; if(nums[left] == nums[right]){ if(nums[mid] > nums[left]){ return findMin(nums+mid+1,numsSize-mid-1); }else if(nums[mid] < nums[right]){ return findMin(nums,mid+1); }else{ int n1,n2; if(mid != 0) n1 = findMin(nums,mid); else n1 = nums[mid]; if(numsSize-mid-1!=0) n2 = findMin(nums+mid+1,numsSize-mid-1); else n2 = nums[mid]; return min(n1,n2); } } else //if(nums[left] > nums[right]) { if(nums[mid] >= nums[left]){ return findMin(nums+mid+1,numsSize-mid-1); }else //if(nums[mid] < nums[right]) { return findMin(nums,mid+1); } } }