Find Minimum in Rotated Sorted Array II
来源:互联网 发布:淘宝买水烟被警察 编辑:程序博客网 时间:2024/06/06 14:52
Find Minimum in Rotated Sorted Array II
Follow up for “Find Minimum in Rotated Sorted Array”:
What if duplicates are allowed?Would this affect the run-time complexity? How and why?
Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
Find the minimum element.
The array may contain duplicates.
问题
“选择有序数组最小值”问题延伸:允许数组中有重复值。
这会影响时间复杂度吗?如何影响?为什么?
假设一个有序数组在某个未知中心旋转(如0 1 2 4 5 6 7可能变成4 5 6 7 0 1 2),找到数组中最小的元素。
数组中可能包含重复的元素。
思路
解题思路课参照Find Minimum in Rotated Sorted Array,当允许重复值时,不同之处是:
1. left == right时,无法判断是三种情况中的哪种,此时采用遍历方式。
2. left != right时,当left <= mid时,最小值在右边;当mid <= right时,最小值在左边。
代码(Java)
ublic class Solution { public int findMin(int[] nums) { return binarySearch(nums,0,nums.length-1); } public int binarySearch(int[] nums, int left , int right) { int length = right - left; if (length == 0) return nums[left]; if (length == 1) return (nums[left] > nums[right] ? nums[right] : nums[left]); else { if (nums[left] < nums[right]){ return nums[left]; } else if(nums[left] > nums[right]){ int mid = (left + right)/2; if (nums[left] < nums[right]){ return nums[left]; } else if (nums[0] <= nums[mid] ){ return binarySearch(nums,mid,right); } else { return binarySearch(nums,left,mid); } } else { for(int i = 1;i<nums.length;i++){ if(nums[i] < nums[i-1]){ return nums[i]; } } return nums[0]; } } }}
运行结果
0 0
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- 【BZOJ1324】Exca王者之剑【最小割】
- salt-api 安装配置
- linux上内存泄漏查看方法之——让系统调用自己定义的new
- Win7系统上配置使用Intellij Idea 13的SVN插件
- VM虚拟机的配置文件(.vmx)损坏修复
- Find Minimum in Rotated Sorted Array II
- React-Native项目运行时报错:Application xxxProject has not been registered.
- php查询数据库的优化
- Idea15 常用设置(一):JDK、SVN
- 路由器的登录和基础配置
- JSTL核心标签库的使用
- JavaScript面向对象精要(一)
- UIViewController数据刷新
- Oracle 11g笔记——调整表空间和数据文件的大小、移动数据文件、联机重做日志文件、控制文件