public class MinNumberInRotatedArray {

    public int getMinNumInRotatedArray(int[] array) {
if(array == null) {
return -1;
}
int leftIndex = 0;
int rightIndex = array.length - 1;
if(array[leftIndex] == array[rightIndex]) {
return array[0];
}
int midIndex = leftIndex;
while(array[leftIndex] >= array[rightIndex]) {
// while(true) { 换成这个其实一样
if(rightIndex - leftIndex <= 1) {//循环退出的条件
midIndex = rightIndex;
break;
}
midIndex = (leftIndex+rightIndex)/2;
if(array[leftIndex] == array[rightIndex] && array[leftIndex] == array[midIndex]) {//如果两边的值和中间的值相等,
//则无法判断中间值在左边还是在右边,因此只能进行顺序查找
minNumBySort(array, leftIndex, rightIndex);
}
if(array[leftIndex] <= array[midIndex]) {
leftIndex = midIndex;
}else if(array[rightIndex] >= array[midIndex]){
rightIndex = midIndex;
}
}
return array[midIndex];
} public int minNumBySort(int[] arr, int leftIndex, int rightIndex) {
int result = arr[leftIndex];
for(int i = leftIndex; i < rightIndex; i++) {
if(arr[i] < result) {
result = arr[i];
}
}
return result;
} public static void main(String[] args) {
MinNumberInRotatedArray testArray = new MinNumberInRotatedArray();
int[] array = {4,5,6,1,2,3};
System.out.println(testArray.getMinNumInRotatedArray(array));
}
}

旋转数组中的最小数字,剑指offer,P70 二分查找来实现O(logn)的查找的更多相关文章

  1. 《剑指offer》旋转数组中的最小数字

    本题来自<剑指offer> 旋转数组中的最小数字 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例 ...

  2. 【剑指Offer】旋转数组中的最小数字 解题报告(Python)

    [剑指Offer]旋转数组中的最小数字 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-intervie ...

  3. 剑指Offer面试题:6.旋转数组中的最小数字

    一 题目:旋转数组中的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1, ...

  4. 【校招面试 之 剑指offer】第11题 旋转数组中的最小数字

    题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如: 数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...

  5. 剑指offer(6)旋转数组中的最小数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...

  6. 旋转数组的最小数字 - 剑指offer 面试题8

    题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

  7. 【C/C++】旋转数组的最小数字/ 剑指offer

    #include <bits/stdc++.h> using namespace std; class Solution { public: int minNumberInRotateAr ...

  8. 【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素

    //旋转数组的最小数字 //题目:把一个数组最開始的若干个元素搬到数组的末尾.我们称之为数组的旋转. //输入一个递增排序的数组的一个旋转.输出旋转数组中的最小元素. //比如:数组{3.4,5,1, ...

  9. 【剑指offer】二分查找二维数组

    1 2 3 4 5 6 7 8 9 3 3 1 2 3 4 5 6 7 8 9 10 3 3 12 2 3 4 5 6 7 8 9 10 例子输出: Yes No No 时间限制:1 秒 内存限制:3 ...

随机推荐

  1. hdu 1809 求SG函数

    A New Tetris Game(2) Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  2. cin 和scanf,scanf比cin快很多

    //#include <iostream> #include <stdio.h> //#include <fstream> //using namespace st ...

  3. MySQL 笔记 —— 日期和时间函数

    [TOC] 获取当前日期的函数和获取当前时间的函数 CURDATE()和CURRENT_DATE()函数获取当前日期:CURTIME()和CURRENT_TIME()函数获取当前时间. mysql&g ...

  4. C语言之分支结构 if(二)

    If的第三种和第四种形式(tips:也是比较常用的形式) 3).if语句第三种形式: 简单来说就是任意的if或者else里面还可以嵌套任意的if-else语句 语法: if(表达式){ if(表达式2 ...

  5. Testlink1.9.14介绍及使用

    Testlink简介  今天在为部门培训testlink的使用,顺便把相关片段记录下来. TestLink是一款开源的测试管理工具,主要用于进行测试过程的管理,通过使用TestLink提供的功能,可以 ...

  6. elike.python.function()

    将python用于基本的科学计算,能完全替代matlab.就最近写的一个物理模型程序来看,用python建立的物理模型的可控性,代码的层次性都优于matlab,只不过python没有matlab那样的 ...

  7. Fortran中将多个文件进行编译运行的方法

    问题:在编译一个单独的Module文件中,发现CentOS7系统中直接使用如下命令无法运行: gfortran program.f90 module.f90 && ./a.out 查找 ...

  8. JavaScript进阶(四)

    现在说说什么是函数.函数的作用可以写一次代码,然后反复的重用这个代码.如:我们要完成多组数和的功能.var sum;sum=3+2;alert(sum); sum=7+8;alert(sum);... ...

  9. CPU和GPU的区别

    个人认为CPU和GPU各有自己的适应领域.CPU(Central Processing Unit)计算核心较少,通常是双核.四核.八核,但是拥有大量的共享缓存.预测.乱序执行等优化,可以做逻辑非常复杂 ...

  10. 使用pycharm+pyqt5 触发自定义方法

    1.依旧使用上次QtDesigner做的界面,如下图: 2.本次的使用text Browser 和 text Edit 和 pushButton控件做触发联系: 3.目的实现在text Edit中随意 ...