编程题:旋转数组的最小数字
来源:互联网 发布:考研形势数据图表分析 编辑:程序博客网 时间:2024/06/13 13:29
1.分析思路
这道题你要是看清楚它的本质了,其实就是一道二分查找变形的题目。旋转之后的数组实际上可以划分为两个子数组部分。左边的数组大小都大于或者等于右边的数组大小。而要找的最小元素就是右边数组的第一个元素。
2.方法一
从头选取数组元素将它与数组第一个元素相减的值记为P1,将当前选取的数组元素减去当前选取数组加一的元素值记为P2.如果P1小于P2,则当前选取数组加一的元素即为最小值。f否则,一直循环下去。如果循环到最终,都是P1小于P2,则直接返回第一个元素,它即为最小。代码如下:
3.方法二
找到数组的中间元素。
中间元素大于第一个元素,则中间元素位于前面的递增子数组,此时最小元素位于中间元素的后面。我们可以让第一个指针left指向中间元素。移动之后,第一个指针仍然位于前面的递增数组中。中间元素小于第一个元素,则中间元素位于后面的递增子数组,此时最小元素位于中间元素的前面。我们可以让第二个指针right指向中间元素。移动之后,第二个指针仍然位于后面的递增数组中。这样可以缩小寻找的范围。
1 0
- 编程题:旋转数组的最小数字
- [编程题]旋转数组的最小数字
- 【面试编程题】5-旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 快速幂
- 搭建maven环境
- VS2012 asp.net开发之“IIS配置网站”
- sql语句使用-插入列与连接查询
- 关系数据库
- 编程题:旋转数组的最小数字
- 【特征匹配】ORB原理与源码解析
- 递推递归练习 P 二分查找
- eclipse中格式化代码快捷键Ctrl+Shift+F失效的原因以及解决办法
- 什么是算法-数据结构学习笔记1.2(基本概念)
- 机器学习----神经网络(二)BP算法
- 在职研究生经济学报考条件
- 九宫格算法
- 剑指offer:面试4从尾到头打印链表