由于工作比较忙,就趁着工作间隙刷刷剑指offer和leetcode吧。尽量每天打卡,自我监督
题目描述:
题目解答:
public static int getMinNumFromNums(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int begin = 0;
int end = nums.length - 1;
while (nums[begin] >= nums[end]) {
if (end - begin == 1) {
return nums[end];
}
int mid = (begin + end) / 2;
int midNum = nums[mid];
if (midNum >= nums[begin] && midNum != nums[end]) {
begin = mid;
} else if (midNum <= nums[end] && midNum != nums[begin]) {
end = mid;
} else if (midNum == nums[begin] && nums[begin] == nums[end]) {
return findMaxWithAll(nums);
}
}
return nums[begin];
}
private static int findMaxWithAll(int nums[]) {
int min = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] < min) {
min = nums[i];
}
}
return min;
}
public static void main(String[] args) {
int nums[] = {2, 3, 4, 0, 1};
System.out.println(getMinNumFromNums(nums));
}