IMWeb提升营Day1 | 训练题6: 旋转数组的最小数字
来源:互联网 发布:淘宝网毛呢女装中长款 编辑:程序博客网 时间:2024/06/07 19:52
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
思路
/* * 思路一:观察旋转数组的规律,题目表明了是一个递增或者不增的数组,旋转之后必然会在遍历过程中出现数值突然变小的现象,就可以找到最小值 */class Solution {public: int minNumberInRotateArray(vector<int> rotateArray) { int length = rotateArray.size(); //输入数组为空 if(length == 0){ return 0; } //部分旋转 for(int i = 0; i < length-1; i++){ if(rotateArray[i]>rotateArray[i+1]){ return rotateArray[i+1]; } } //全部旋转,相当于没有旋转 return rotateArray[0]; }};
思路二:二分查找
/* * 思路二:通过二分法去提高思路一的查找效率 */class Solution {public: int minNumberInRotateArray(vector<int> rotateArray) { int length = rotateArray.size(); //输入数组为空 if(length == 0){ return 0; } int left = 0; int right = length-1; int middle; while(rotateArray[left] >= rotateArray[right]){ //已经找到分界线的两个元素了 if((right-left) == 1){ middle = right; break; } //还没找到分界线,取得中值缩小一下查找范围 middle = (left+right)/2; if(rotateArray[middle] >= rotateArray[left]){ left = middle; } if(rotateArray[middle] <= rotateArray[right]){ right = middle; } } return rotateArray[middle]; }};
阅读全文
0 0
- IMWeb提升营Day1 | 训练题6: 旋转数组的最小数字
- IMWeb提升营Day1 | 训练题1:有序二维数组的查找
- IMWeb提升营Day6 | 训练题32:把数组排成最小的数
- IMWeb提升营Day5 | 训练题28:数组中出现超过一半的数字
- IMWeb提升营Day7 | 训练题37:数字在排序数组中出现的次数
- IMWeb提升营Day7 | 训练题40:数组中只出现一次的数字
- IMWeb提升营Day1 | 训练题2:字符串空格替换
- IMWeb提升营Day1 | 训练题4:重建二叉树
- IMWeb提升营Day1
- IMWeb提升营Day5 | 训练题29:最小的K个数
- IMWeb提升营Day1 | 训练题3:从尾到头打印链表
- IMWeb提升营Day1 | 训练题5: 用两个栈实现队列
- IMWeb提升营Day1 | 训练题5: 用两个栈实现队列
- IMWeb提升营Day5 | 训练题30:连续数组的最大和
- IMWeb提升营 —Day1
- IMWeb提升营Day5 | 训练题27:字符串的排列
- IMWeb提升营Day3 | 训练题13:调整数字顺序使奇数位于偶数前面
- 【6】旋转数组 的最小数字
- C语言函数的参数能允许几个
- Miktex 添加宏包
- pandas replace函数使用小结
- 《UNIX网络编程 卷1》 笔记: I/O复用 select函数
- TabLayout踩坑之IllegalArgumentException: Tab belongs to a different TabLayout.
- IMWeb提升营Day1 | 训练题6: 旋转数组的最小数字
- Access restriction: The type JPEGImageEncoder is not accessible due to restriction
- [LeetCode]AddTwoNumbers
- 信息安全概论
- 实训周五
- objdump选项说明
- 面具
- Android开发笔记 Activity间的通讯
- 飞机小游戏——一阶段