【剑指offer-Java版】08旋转数组的最小数字
2016-04-25 17:39
736 查看
旋转数组最小数字:暴力方法就是遍历-有效的方法是二分,但是存在失效的情况
几个特别的测试用例需要注意下:
数组中含有多个相同的数字
最小数字就是第一个
测试代码:
几个特别的测试用例需要注意下:
数组中含有多个相同的数字
最小数字就是第一个
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版】07用两个栈实现队列
- 简单的SVG线条动画
- 使用r.js压缩整个项目的JavaScript文件
- Jquery获取cookies
- 前端需要掌握的20个正则表达式
- JSP的隐式对象
- AOP 在javascript 中的使用
- HTML5、JavaScript 3D游戏引擎和框架
- javascript中面向对象的三大作用
- FastJson 使用与介绍
- 【剑指offer-Java版】06重建二叉树
- js中的立即执行函数
- node.js cluster多进程、负载均衡和平滑重启
- JavaScript中的匿名函数及函数的闭包
- 前端大神总结的学习方法【引用】
- javascript冒泡事件的意义及如何阻止冒泡事件
- 【剑指offer-Java版】05从尾到头打印链表
- 【剑指offer-Java版】04替换空格
- PHP+Bootstrap制作动态分页标签
- web编程速度大比拼(nodejs go python)(非专业对比)