剑指offer-面试题8:旋转数组中的最小数字
来源:互联网 发布:冷漠的文字软件 编辑:程序博客网 时间:2024/06/04 18:52
题目
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小元素为1.
解
public int Min(int[] nums){ if(nums.length==1){//只有一个元素 return nums[0]; } if(nums[nums.length-1]>nums[0]){//元素是已经排好序的了 return nums[0]; } int i=0; int j=nums.length-1; while(j-i>1){ int mid=(j+i)/2; //如果nums[i],nums[mid],nums[j]的数字是相等的,那么只能顺序查找 if(nums[i]==nums[mid] && nums[j]==nums[mid]){ return minInOrder(nums,i,j); } if(nums[mid]>=nums[i]){ i=mid; } else if(nums[mid]<=nums[j]){ j=mid; } } return nums[j]; } public int minInOrder(int[] nums,int i,int j){ int result=nums[i]; for(int k=i+1;k<=j;k++){ if(nums[k]<result) result=nums[k]; } return result; }
0 0
- 剑指offer-面试题8:旋转数组中的最小数字
- 【剑指offer】面试题8:旋转数组中的最小数字
- 【剑指offer】面试题8:旋转数组的最小数字
- 剑指offer面试题8:旋转数组的最小数字
- 剑指Offer:面试题8 :旋转数组的最小数字
- 《剑指offer》面试题8旋转数组的最小数字
- 《剑指Offer》面试题8:旋转数组的最小数字
- 【剑指offer】 面试题8: 旋转数组的最小数字
- 剑指offer-面试题8:旋转数组的最小数字
- 剑指offer面试题8:旋转数组的最小数字
- 【剑指offer】面试题8:旋转数组的最小数字
- 剑指offer面试题8:旋转数组的最小数字
- 剑指offer--面试题8: 旋转数组的最小数字
- 剑指Offer---面试题8:旋转数组的最小数字
- 剑指offer-面试题8-旋转数组的最小数字
- 剑指offer-面试题8 旋转数组的最小数字
- 剑指offer-面试题8-旋转数组的最小数字
- 剑指offer 面试题8 旋转数组的最小数字
- div ul li自动适应高度float:left
- Intersection of Two Arrays II
- XCode 7.3.1(dmg) 官方直接下载地址(离线下载)
- Android push 原理 分析
- iOS 模拟器安装.app
- 剑指offer-面试题8:旋转数组中的最小数字
- Hbuilder开发移动新闻客户端(二)
- Activiti工作流引擎使用
- 配置eclipse的java代码注解的模板
- LeetCode-135.Candy
- 5G到底什么时候来,它究竟能给我们带来什么?
- more命令
- C++异常处理
- 一个基于组合模式的游戏地图系统