【剑指offer-Java版】08旋转数组的最小数字
旋转数组最小数字:暴力方法就是遍历-有效的方法是二分,但是存在失效的情况
几个特别的测试用例需要注意下:
数组中含有多个相同的数字
最小数字就是第一个
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旋转数组的最小数字相关推荐
- 剑指offer面试题[8]-旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...
- 剑指offer(12)旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组 ...
- 剑指Offer - 面试题11. 旋转数组的最小数字(二分查找)
1. 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] ...
- 剑指offer面试题11. 旋转数组的最小数字(二分查找)
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的 ...
- 剑指offe面试题8 旋转数组的最小数字 (java实现)
解题思路: 针对旋转数组的特点,即旋转后,数组的前半部分是有序的,后半部分是有序的. 1.先考虑一般情况:可以参考二分查找的思想,在数组中设置两个指针,一个指向数组的起始位置,一个指向数组的结束位置. ...
- 剑指offer java版 test3—从尾到头打印链表
标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...
- 【LeetCode】剑指 Offer 53 - I. 在排序数组中查找数字 I
[LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 文章目录 [LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 一.二分法 总结 一.二分法 ...
- 剑指offer java版(一)
二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...
- 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中
面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...
- j剑指offer面试题[33]-把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路: 可以 ...
最新文章
- Oracle的闪回特性之恢复truncate删除表的数据
- 中国移动2016年Web应用防火墙集采:绿盟、深信服中标
- C语言基础MessageBox(......)用法详解
- pythonrequests证书_python requests证书问题解决
- ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
- ubuntu从命令打开终端
- php接入腾讯云短信SDK
- 【历史上的今天】2 月 4 日:Unix 之父诞生;Facebook 上线;微软大洗牌
- android开发学习-日常用到的好东西-常用技巧分享
- 计算机英语口语900句,日常英语口语900句
- 日语中的接打电话礼貌用语
- plc无法跟计算机通信,无法与PLC通信
- 2021-05-29当微商怎么引流?微商如何利用闲鱼引流?
- 小程序(之音乐播放器实现思路)
- 拼多多校招内推编程题3 六一儿童节
- 【手游】梦幻西游手游 美术资源加密分析
- python可视化图表分析---pyecharts库的使用
- PS 的形状工具的布尔运算
- ubuntu18.04 台式机 安装 TPlink-5200H 无线网卡驱动 趟坑
- python刷题大杂烩