博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Search in Rotated Sorted Array II 解题报告
阅读量:6601 次
发布时间:2019-06-24

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

Follow up for "Search in Rotated Sorted Array":
What if 
duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given target is in the array.
[解题思路]
确实有影响。比如,上一题( )的程序中默认如果A[m]>=A[l],那么[l,m]为递增序列的假设就不能成立了,比如如下数据
[1,3,1,1,1]
所以,要是想增强该假设,有两个选择
1. 对于每一个递增序列,遍历之,确认。
2. 找到pivot点,然后确定对应序列搜索。
不写代码了。
Update: 3/18/2013. add the implementation
重新想了一下,其实不需要这么复杂。如果A[m]>=A[l]不能确定递增,那就把它拆分成两个条件
1. A[m]>A[l]  递增
2. A[m] ==A[l] 确定不了,那就l++,往下看一步即可。
实现如下
1:       bool search(int A[], int n, int target) {  2:            int start = 0;  3:            int end = n-1;  4:            while(start <= end)  5:            {  6:                 int mid = (start+end)/2;  7:                 if(A[mid] == target) return true;  8:                 if(A[start] < A[mid])  9:                 {  10:                      if(target>=A[start] && target
A[mid]) 16: { 17: if(target>A[mid] && target<=A[end]) 18: start = mid+1; 19: else 20: end = mid-1; 21: } 22: else //skip duplicate one, A[start] == A[mid] 23: start++; 24: } 25: return false; 26: }

转载于:https://www.cnblogs.com/codingtmd/archive/2013/01/04/5078956.html

你可能感兴趣的文章
genimage.cfg.template hacking
查看>>
DataTable转换成json字符串
查看>>
RecyclerView重用导致的元素重复问题
查看>>
iOS网络协议----HTTP/TCP/IP浅析
查看>>
ubuntu 12.04 安装 redis
查看>>
基于多线程实现套接字服务端支持并发
查看>>
IOS_CGRect
查看>>
Sql Server中不常用的表运算符之APPLY(1)
查看>>
【DM642】ICELL Interface—Cells as Algorithm Containers
查看>>
linux所有命令失效的解决办法
查看>>
力扣算法题—085最大矩阵
查看>>
svs 在创建的时候 上传文件夹 bin obj 这些不要提交
查看>>
mysql-用命令导出、导入表结构或数据
查看>>
Tinkphp
查看>>
EntityFrameworkCore 一对一 && 一对多 && 多对多配置
查看>>
How to temporally disable IDE tools (load manually)
查看>>
Vue.js学习 Item4 -- 数据双向绑定
查看>>
几种排序方式的java实现(01:插入排序,冒泡排序,选择排序,快速排序)
查看>>
test--构造函数写法
查看>>
server application unavailable
查看>>