旋转数组最小数字:暴力方法就是遍历-有效的方法是二分,但是存在失效的情况
几个特别的测试用例需要注意下:
数组中含有多个相同的数字
最小数字就是第一个

public class _Q08 {public int MinInReverse(int array[]){if(array == null || array.length == 0) return Integer.MIN_VALUE;if(array.length == 1) return array[0];int indexL = 0, indexR = array.length - 1, indexMid = array.length/2;while (indexL < indexR) {if ((array[indexL] < array[indexMid]) && (array[indexR] < array[indexMid])) {indexL = indexMid;indexMid = (indexL + indexR) / 2;} else if ((array[indexL] > array[indexMid]) && (array[indexR] > array[indexMid])) {indexR = indexMid;indexMid = (indexL + indexR) / 2;} else if ((array[indexMid] == array[indexL]) || (array[indexMid] == array[indexR])) {return Min(array);} else if (array[indexL] < array[indexR]) {return array[0];}}return Integer.MAX_VALUE;}public int Min(int array[]){int min = Integer.MAX_VALUE;for(int i=0; i<array.length; i++){if(array[i] < min) min = array[i];}return min;}}

测试代码:

public class _Q08Test extends TestCase {_Q08 minInReverse = new _Q08();public void testMinInReverse() throws Exception{int array1[] = {1,1,1,0,1};int array2[] = {3,4,5,1,2};int array3[] = {1,2,3,4,5};int array4[] = {1};int array5[] = null;int min = minInReverse.MinInReverse(array5);System.out.println("min = " + min);}}

【剑指offer-Java版】08旋转数组的最小数字相关推荐

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

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

  2. 剑指offer(12)旋转数组的最小数字

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

  3. 剑指Offer - 面试题11. 旋转数组的最小数字(二分查找)

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

  4. 剑指offer面试题11. 旋转数组的最小数字(二分查找)

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

  5. 剑指offe面试题8 旋转数组的最小数字 (java实现)

    解题思路: 针对旋转数组的特点,即旋转后,数组的前半部分是有序的,后半部分是有序的. 1.先考虑一般情况:可以参考二分查找的思想,在数组中设置两个指针,一个指向数组的起始位置,一个指向数组的结束位置. ...

  6. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  7. 【LeetCode】剑指 Offer 53 - I. 在排序数组中查找数字 I

    [LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 文章目录 [LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 一.二分法 总结 一.二分法 ...

  8. 剑指offer java版(一)

    二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...

  9. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

  10. j剑指offer面试题[33]-把数组排成最小的数

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路: 可以 ...

最新文章

  1. Oracle的闪回特性之恢复truncate删除表的数据
  2. 中国移动2016年Web应用防火墙集采:绿盟、深信服中标
  3. C语言基础MessageBox(......)用法详解
  4. pythonrequests证书_python requests证书问题解决
  5. ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
  6. ubuntu从命令打开终端
  7. php接入腾讯云短信SDK
  8. 【历史上的今天】2 月 4 日:Unix 之父诞生;Facebook 上线;微软大洗牌
  9. android开发学习-日常用到的好东西-常用技巧分享
  10. 计算机英语口语900句,日常英语口语900句
  11. 日语中的接打电话礼貌用语
  12. plc无法跟计算机通信,无法与PLC通信
  13. 2021-05-29当微商怎么引流?微商如何利用闲鱼引流?
  14. 小程序(之音乐播放器实现思路)
  15. 拼多多校招内推编程题3 六一儿童节
  16. 【手游】梦幻西游手游 美术资源加密分析
  17. python可视化图表分析---pyecharts库的使用
  18. PS 的形状工具的布尔运算
  19. ubuntu18.04 台式机 安装 TPlink-5200H 无线网卡驱动 趟坑
  20. python刷题大杂烩

热门文章

  1. python官网支持货到付款吗_官网购买的iPhone12pro还没发货?试着用Python快速入手...
  2. 五、cookie和web缓存
  3. HALCON检测字符日期
  4. 用vue优雅地编写UI组件的几条指导原则
  5. iOS:自定义模态动画 --UIPresentationController
  6. JS-匀速运动-运动停止
  7. viewpage的使用
  8. 查看SQL Server Resource Database以及修改系统表
  9. 打造属于自己的图文符号库
  10. MySQL中的锁(表锁、行锁)