寻找旋转排序数组中的最小值 II
2015-12-24 16:54
330 查看
假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。
你需要找到其中最小的元素。
数组中可能存在重复的元素。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出[4,4,5,6,7,0,1,2] 返回 0
***********************************
如果用二分查找的话,当中间的值大于最右边的值的时候,那么最小值一定在mid和right中间,当中间值小于最左边值的时候,最小值一定在left和mid中间,只有当right mid 和 left的值相同的时候才无法确定 最小值在哪个区间,无法确定的时候让right的值 自减就好,因为right的一定是大于等于最小值的
你需要找到其中最小的元素。
数组中可能存在重复的元素。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出[4,4,5,6,7,0,1,2] 返回 0
***********************************
如果用二分查找的话,当中间的值大于最右边的值的时候,那么最小值一定在mid和right中间,当中间值小于最左边值的时候,最小值一定在left和mid中间,只有当right mid 和 left的值相同的时候才无法确定 最小值在哪个区间,无法确定的时候让right的值 自减就好,因为right的一定是大于等于最小值的
public class Solution { /** * @param num: a rotated sorted array * @return: the minimum number in the array */ public int findMin(int[] num) { // write your code here int left = 0; int right = num.length - 1; while(left < right){ int mid = (left + right)/2; if(num[right] < num[mid]){ left = mid + 1; } else if(num[mid] < num[left]){ right = mid; } else{ right--; } } return num[left]; } }
相关文章推荐
- js遍历json数组
- 使用log4j日志-配置载入问题
- ASP.NET MVC4/5 - Ajax 防止 CSRF攻击
- Java Map 集合类简介
- indexOf()定义和用法
- 史上最简单的Hibernate入门简介
- 使用git服务器实现生产环境应用服务器代码更新管理的方案
- linux系统下解析shell标准输出流生成json包demon
- 如何自动更新-CMD
- iOS获取网络类型和运营商信息
- UNIX文件系统之软链接和硬链接
- 我的博客之旅
- 从头认识java-14.4 Java提供的数组的实用功能(1)
- Angular2的新时代【介绍, 用后评价, 关键问题】—前端开发框架的比较选择
- 直接借鉴的 ids拼接
- iOS开发 .bundle使用
- 微信编辑器—构思编辑器元旦圣诞排版素材
- id3lib-3.8.3在linux下的编译
- DKOM隐藏驱动
- go使用Defer的几个场景