博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Find Minimum in Rotated Sorted Array
阅读量:7221 次
发布时间:2019-06-29

本文共 1251 字,大约阅读时间需要 4 分钟。

Question: 

题目:

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

Find the minimum element.

You may assume no duplicate exists in the array.

 

Attention:

Rotated Sorted Array 有一点特性, nums[start] > nums[end],否则就是 UnRotated Sorted Array 了。思路如下

  • If nums[start] < nums[end], ==> UnRotated ==> return nums[start]
  • Else 取 disorder 的一半,踢掉大值,进行下一次找寻。 

这里的 start, mid, end 加减一进行下一步 method call,踢掉大值,也可以防止死循环。

下面的代码,使用了 while(start < end) {} 代替 原 Recursion 实现。其时间复杂度都是 O(logn).

 

1 public int findMin(int[] nums) { 2     if(nums == null || nums.length == 0) { 3         return 0; 4     } 5      6     int start = 0; 7     int end = nums.length - 1; 8     int res = nums[start]; 9     10     while(start < end) {11         int mid = (start + end)/2;12         if(nums[start] < nums[end]) {13             return nums[start];14         } else if(nums[start] > nums[mid]) {15             start++;16             end = mid;17             res = Math.min(res, nums[mid]);18         } else if(nums[end] < nums[mid]) {19             start = mid + 1;20             res = Math.min(res, nums[end]);21         }22     }23     24     return res;25 }

 

转载于:https://www.cnblogs.com/Phoenix-Fearless/p/5101247.html

你可能感兴趣的文章
BAT集体升级云事业部,这背后都藏着哪些“小心思”?
查看>>
JavaScript对象:我们真的需要模拟类吗?
查看>>
Node.js因为OpenSSL安全问题推迟更新
查看>>
宜人贷CTO段念:透明与面向目标是管理理念的核心
查看>>
Java 9进入第一轮问题修复阶段
查看>>
蔚来汽车李斌:2025年无人驾驶将100%解放驾驶时间
查看>>
数据中心操作人员:艰难地在针对VM构建的基础设施上运行容器
查看>>
从0到1:PostCSS 插件开发最佳实践
查看>>
物联网技术周报第 141 期: 使用 Alexa Voice 和 Raspberry Pi 构建图片识别应用
查看>>
FreeWheel业务系统微服务化过程经验分享
查看>>
Jeff Bean谈Flink与流式处理的5大新发现
查看>>
移动互联网下半场,iOS开发者如何“高薪”成长?
查看>>
Facebook智能bug修复神器:让程序员少掉几根头发
查看>>
雪球CTO王栋谈招聘:认可团队与产品最重要
查看>>
Atlassian是怎样进行持续交付的?且听 Steve Smith一一道来
查看>>
通过Baratine将Lucene库暴露为微服务
查看>>
SQL Server 2016:伸展数据库
查看>>
宜人贷CTO段念:我与“研发管理”
查看>>
CentOS6 编译安装 redis-3.2.3
查看>>
Web Storage相关
查看>>