求旋转数组中的最小值
来源:互联网 发布:足球滚球软件 编辑:程序博客网 时间:2024/05/24 03:44
packagecom.ytx.Search;
/**
* 在旋转数组中找到最小的数字
* 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
* 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
* {1,2,3,4,5}-> {3,4,5,1,2}
* 特例:
把排序数组的前面的0个元素搬到最后面,即排序数组本身。
* 还要考虑多个重复数字的情况如:
* {0,1,1,1,1,}-> {1,0,1,1,1}或{1,1,1,0,1}
*@authoryuantian xin
*
*/
publicclass SearchMin_inRotateArray {
publicint findMin(int[]nums) {
intlen = nums.length;
if(nums== null || len <= 0) {
System.out.println("数组未初始化");
System.exit(-1);
}
intlow = 0;
inthigh = len - 1;
intmid = low;
while(nums[low] >= nums[high]) {
if((high- low) == 1) {
mid= high;
break;
}
mid= (low+ high) /2;
//如果高指针,低指针和中间指针指向的数字相等,直接顺序查找
if(nums[low]==nums[high] && nums[low]==nums[mid]) {
returnorderSearch(nums,low,high);
}
if(nums[mid] >= nums[low]) {
low= mid;
}elseif(nums[mid] <=nums[high]){
high= mid;
}
}
returnnums[mid];
}
//直接顺序查找
publicint orderSearch(int[]nums,int low, int high) {
intmin = nums[low];
for(inti = low;i <=high;i++) {
if(min> nums[i])
min= nums[i];
}
returnmin;
}
publicstatic void main(String[]args) {
int[]data = {1,1,1,0,1};
SearchMin_inRotateArrayob = newSearchMin_inRotateArray();
intminNumber = ob.findMin(data);
System.out.println(minNumber);
}
}
阅读全文
0 0
- 求旋转数组中的最小值
- 旋转数组求最小值
- 旋转数组求最小值
- 旋转数组求最小值
- 旋转数组中的最小值
- 旋转数组中的最小值
- 求旋转数组的最小值
- 求旋转数组的最小值
- 剑指offer:求一个旋转数组中的最小值
- 笔记 旋转数组中的最小值
- 寻找旋转数组中的最小值
- 【数学】【数组】旋转数组求最小值
- 求旋转数组后的最小值
- 剑指off-求旋转数组最小值
- Java求旋转数组的最小值
- 求二维数组中的最小值
- 求数组中的最大最小值
- C++ 求旋转字符串中的最小值
- wr720n v4 折腾笔记(一):安装Openwrt
- JavaSwing_4.10: JInternalFrame(内部窗口)
- 判断两个链表是否相交
- 希尔排序及代码实现
- 使用虚拟机实现lvs nat模式负载均衡
- 求旋转数组中的最小值
- Overlapping Rectangles(线段树,矩形面积并)
- 多线程的三种实现方式及比较
- 嵌入式硬件系统相关知识学习笔记
- 动态规划(0-1背包问题)---C#版
- [LeetCode][105,106] Construct Binary Tree from Inorder and (Post/Pre)order Traversal
- jq代码学习2——《锋利的JQUERY》 dom对象和jQ对象转换
- 各浏览器的用户代理字符串整理
- C语言字节对齐