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

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

Question: 

题目:

Follow up for "Find Minimum in Rotated Sorted Array":

What if duplicates are allowed?

Would this affect the run-time complexity? How and why?

 

思路:

两端寻找,跳过重复项,直至 nums[start] 与前项不同,nums[end] 与后项不同,且nums[start] 与 nums[end] 不相同。

其他部分,同 Find Minimum in Rotated Sorted Array。

 

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 minNum = nums[start]; 9     10     while(start < end) {11         int startNum = nums[start++];12         int endNum = nums[end--];13         minNum = Math.min(minNum, Math.min(startNum, endNum));14         15         while(start < end && nums[start] == startNum) {16             start++;17         }18         19         while(end > start && nums[end] == endNum) {20             end--;21         }22         23         if(start == end) {24             return Math.min(minNum, nums[start]);25         } else if(nums[start] == nums[end]) {26             continue;27         }28         29         int mid = (start + end)/2;    // 此处 nums[mid],nums[start],nums[end]的值将均不同30         if(nums[start] < nums[end]) {31             return Math.min(minNum, nums[start]);32         } else if(nums[end] < nums[mid]) {33             start = mid + 1;34             minNum = Math.min(minNum, nums[end]);35         } else if(nums[start] > nums[mid]) {36             start++;37             end = mid;38             minNum = Math.min(minNum, nums[mid]);39         } 40     }41     42     return minNum;43 }

 

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

你可能感兴趣的文章
问题-
查看>>
抽取vs2010安装包中vc++ runtime
查看>>
浅谈Vue之双向绑定
查看>>
hibernate简单入门教程(五)---------检索策略
查看>>
jqgrid查找
查看>>
mysql中,查看当前数据库下所有的基表,不包括视图
查看>>
Android density、dpi、dp、px
查看>>
初识JAVA中的泛型概念
查看>>
Pitch,Yaw,Roll的概念
查看>>
Texture tiling and swizzling
查看>>
IOS 真机调试 报错 图片资源 不存在 原因
查看>>
部署NTP服务器进行时间同步
查看>>
Codeforces Round 97B 点分治
查看>>
Candy
查看>>
dN/dS与分子进化常用软件
查看>>
在 foreach 里使用引用要注意的陷阱(转)
查看>>
python3和paramiko安装
查看>>
HDU 2586 How far away ? 离线lca模板题
查看>>
CMarkup 解析XML
查看>>
vue中computed和watch的用法
查看>>