一、题目内容
二、题解
解法1:
思路
找到第一个不符合排序的小数
代码
class Solution { public int minArray(int[] numbers) { int pre = numbers[0]; int first = pre; for(int i = 0; i<numbers.length; i++){ if(numbers[i]<pre){ return numbers[i]; }else{ pre = numbers[i]; } } return pre<first?pre:first; }}
解法2:
思路
二分查找
代码
class Solution { public int minArray(int[] numbers) { if (numbers.length == 1) { return numbers[0]; } int left = 0; int right = numbers.length - 1; while (left < right) { int mid = left + (right - left) / 2; if (numbers[mid] > numbers[right]) { left = mid+1; } else if (numbers[left] > numbers[mid]) { right = mid; } else { //相等时,忽略一位 right--; } } return numbers[left]; }}