题解 | #旋转数组的最小数字#
旋转数组的最小数字
https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @param numsLen int nums数组长度 * @return int整型 */ int minNumberInRotateArray(int* nums, int numsLen ) { // write code here int i = 0,j = 0; int low = 0; int high = numsLen-1; int mid = (low+high)/2; while (1) { if (high-low+1<3) { if(nums[low]>nums[low+1]) return nums[low+1]; else if(nums[high-1]>nums[high]) return nums[high]; } //if(nums[mid-1]>nums[mid]) return nums[mid]; if (nums[mid]<nums[low])high = mid; else if (nums[mid]>nums[low]) low = mid; else if (nums[mid]=nums[low]) //考虑特例 { for(i = 0; i<numsLen-1; i++) //10111这种只有暴力循环了 { if(nums[i]>nums[i+1]) return nums[i+1]; } return nums[0]; ////0111这种不循环的 } mid = (low+high)/2; } return nums[0]; }