classSolution {publicintfindMin(int[] nums) {// if array is rotated, the first element will always larger than the last elememt// binary searchreturnbinarySearch(nums,0,nums.length); }privateintbinarySearch(int[] nums,int start,int end){//end is the not searchaableint mid = (start+end)/2;if (mid==0|| mid==nums.length|| nums[mid-1]>nums[mid]) return nums[mid%nums.length];if (nums[mid]>nums[0]) returnbinarySearch(nums, mid+1, end);elsereturnbinarySearch(nums, start, mid); }}
iterative
classSolution {publicintfindMin(int[] nums) {int start =0;// end not inculddedint end =nums.length;while (start<end){int mid = (start+end)/2;if (mid ==0|| nums[mid-1]>nums[mid]) return nums[mid];if (nums[mid]>nums[0]) start=mid+1;else end=mid; }return nums[0]; }}
classSolution {publicintfindMin(int[] nums) {int start =0;// include the last elementint end =nums.length-1;while(start<=end){int mid = (start+end)/2;if (mid>0&& nums[mid-1]>nums[mid]) return nums[mid];if (nums[mid]>=nums[0]) start=mid+1;else end = mid; }return nums[0]; }}