旋转数组的最小数字
来源:互联网 发布:sql select as table 编辑:程序博客网 时间:2024/06/03 03:34
题目
思路
数列分为前后两部分有序数列,最小值在前后数列的交界处,采用二分查找方法不断逼近,不过要考虑非递减数列的重复数字情况
代码
int binarySearch(int[] arr,int front,int rear){ if(front+1 == rear || front == rear) return arr[rear]<arr[front]?arr[rear]:arr[front]; int index = (front+rear)/2; if(arr[front] == arr[index] && arr[rear] == arr[index]){//此时两边中间都一样,考虑到特殊情况,我们两边均遍历一次,进行最后的比较大小。 int find1 = binarySearch(arr,front,index); int find2 = binarySearch(arr,index+1,rear); return find1<find2?find1:find2; }else if(arr[index] >= arr[front] && arr[index] > arr[rear]){ return binarySearch(arr,index,rear); } else{ return binarySearch(arr,front,index); } }
阅读全文
0 0
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 笔试题整理(一)
- ubuntu下没有/var/log/message
- 矩形覆盖
- POJ2446——匈牙利算法讲解
- ES6 字符串模版用法和例子
- 旋转数组的最小数字
- AndroidStudio第一次从gitlab克隆项目
- maven多实例打包
- c语言实现扫雷(非图形化界面)
- Centos7 Zookeeper安装笔记
- 观察者模式
- 俩个有序链表的合并
- ImageLoader
- sql