本文主要是介绍算法-------寻找旋转排序数组中的最小值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
寻找旋转排序数组中的最小值假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0
解决方法:
public int findMin(int[] nums) {int left = 0,right = nums.length-1,mid,min = Integer.MAX_VALUE;while (left <= right){mid = (left + right)/2;if (nums[left] <= nums[mid]) {//左边是有序的if (nums[left] < min) {min = nums[left];}left = mid + 1;}else {//右边是有序的if (nums[mid] < min) {min = nums[mid];}right = mid -1;}}return min;}
这篇关于算法-------寻找旋转排序数组中的最小值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!