热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

"CodingInterviewGuide"--在数组中找到一个局部最小的位置

【题目】定义局部最小的概念:arr长度为1时,arr[0]是局部最小;arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小,如果arr[

题目

  定义局部最小的概念:arr长度为1时,arr[0]是局部最小;arr的长度为N(N > 1)时,如果arr[0]

  给定无序数组arr,已知arr中任意两个相邻的数都不相等。写一个函数,只需返回arr中任意一个局部最小出现的位置即可
 

 1     public int getLocalMinIndex(int[] arr)
 2     {
 3         if(arr == null || arr.length == 0)
 4         {
 5             return -1;
 6         }
 7         if(arr.length == 1 || arr[0] ])
 8         {
 9             return 0;
10         }
11         if(arr[arr.length - 1] ])
12         {
13             return arr.length - 1;
14         }
15         int left = 1;
16         int right = arr.length - 2;
17         while(left < right)
18         {
19             int mid = (left + right) / 2;
20             if(arr[mid] > arr[mid - 1])
21             {
22                 right = mid - 1;
23             }
24             else if(arr[mid] > arr[mid + 1])
25             {
26                 left = mid + 1;
27             }
28             else
29             {
30                 return mid;
31             }
32         }
33         return left;
34     }

  二分查找并不是数组有序时才能使用,只要你能确定二分两侧的某一侧肯定存在你要找的内容,就可以使用二分查找

 

来源:左程云老师《程序员代码面试指南》


推荐阅读
author-avatar
手机用户2502907451
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有