【数学】【数组】旋转数组求最小值
来源:互联网 发布:真人卡通头像制作软件 编辑:程序博客网 时间:2024/05/22 17:27
题目:来自脑客爱刷题
一个有序的数组arr可能经过一次旋转处理也可能没有。
例如:有序数组{1,2,3,4,5,6,7},可以旋转处理为:{4,5,6,7,1,2,3}等等。
请在这种的数组中找到最小的数。
提示:尽可能使用二分查找,该解法为最优解。
int FindMinNumber(const int* num, int len){if (num == nullptr || len <= 0)throw new std::exception("Invaalid parameters");if (len == 1)return num[0];int left = 0;int right = len - 1;while (left < right){if (left == right - 1)//真的有必要???break;if (num[left] < num[right])//没有旋转return num[left];int mid = (left + right) / 2;if (num[mid] < num[left])//断点在左侧,可能是mid{right = mid;continue;}if (num[mid] > num[right])//断点在右侧,不可能是mid{left = mid + 1;continue;}//此时left==mid==rightleft++;while (left < mid){if (num[left] == num[left - 1]){left++;}else if (num[left] < num[left - 1])//left为断点return num[left];else //if (num[left] > num[left - 1])断点在右侧,断点不可能是left{left++;//因为断点不可能是left,所以右移一位right = mid;break;}}}return min(num[left], num[right]);}
0 0
- 【数学】【数组】旋转数组求最小值
- 旋转数组求最小值
- 旋转数组求最小值
- 旋转数组求最小值
- 求旋转数组的最小值
- 求旋转数组的最小值
- 求旋转数组中的最小值
- 求旋转数组后的最小值
- 剑指off-求旋转数组最小值
- Java求旋转数组的最小值
- 旋转数组找最小值
- 旋转数组最小值
- 旋转数组的最小值
- 旋转数组中的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组最小值
- 旋转数组找最小值
- Linux最大打开文件描述符数
- FPGA配置启动详解系列(一)——配置文件详解
- 默妹(一)
- 摸鱼儿·问莲根有丝多少
- xUtils 框架的使用注意点
- 【数学】【数组】旋转数组求最小值
- Could not apply the stored configuration for monitors
- 第18周OJ测试项目2--关灯
- ExtJS:文件上传实例
- 解决pathForResource返回nil, 无法读取plist文件问题
- spring常用注解
- 87程序锁的功能实现
- 手机疑似中毒,恢复到出厂设置也不管用,还好有RE文件浏览器
- Js操作Select大全