LintCode-搜索旋转排序数组 II
来源:互联网 发布:淘宝误删宝贝恢复 编辑:程序博客网 时间:2024/05/22 11:32
跟进“搜索旋转排序数组”,假如有重复元素又将如何?
是否会影响运行时间复杂度?
如何影响?
为何会影响?
写出一个函数判断给定的目标值是否出现在数组中。
您在真实的面试中是否遇到过这个题?Yes
样例
标签 Expand 给出[3,4,4,5,7,0,1,2]和target=4,返回 true
分析:有重复数据还是很蛋疼的,重点在于消重,要使得A[l]严格大于A[r],这样就可以继续判断区间的单调性,从而二分
代码:
class Solution { /** * param A : an integer ratated sorted array * param target : an integer to be searched * return : an integer */public: int search(vector<int> &A, int target) { // write your code here return search(A,target,0,A.size()-1); } int search(vector<int>&A,int target,int l,int r) { if(l>r) return 0; while(l<r&&A[l]==A[r]) l++; int mid = (l+r)/2; if(A[mid]==target) return true; if(A[l]<A[r]) { if(A[mid]>target) return search(A,target,l,mid-1); else return search(A,target,mid+1,r); } else if(A[mid]>=A[l]) { if(A[mid]>=target&&target>=A[l]) return search(A,target,l,mid-1); else return search(A,target,mid+1,r); } else { if(A[mid]<=target&&target<=A[r]) return search(A,target,mid+1,r); else return search(A,target,l,mid-1); } }};
0 0
- LintCode-搜索旋转排序数组 II
- LintCode : 搜索旋转排序数组 II
- lintcode-搜索旋转排序数组II-63
- LintCode:搜索旋转排序数组 II
- Lintcode 搜索旋转排序数组 II
- LintCode 63 搜索旋转排序数组 II
- LintCode-搜索旋转排序数组
- LintCode : 搜索旋转排序数组
- LintCode:搜索旋转排序数组
- LintCode:搜索旋转排序数组
- *[Lintcode]搜索旋转排序数组
- lintcode,搜索旋转排序数组
- Lintcode 搜索旋转排序数组
- lintcode--搜索旋转排序数组
- 搜索旋转排序数组 II
- 搜索旋转排序数组 II
- 搜索旋转排序数组 II
- 搜索旋转排序数组 II
- 黑马程序员-----oc语言学习笔记之面向对象的三大特性
- Python定义类方法
- 今天第一个项目感觉很难
- 手斧Linux – 从LFS到Funtoo (50)
- 实现链式栈
- LintCode-搜索旋转排序数组 II
- 简单继承
- Worklight生成的android代码, 运行时,
- 关于转发与重定向的区别——兄弟阋于墙而外御其辱
- 手斧Linux – 从LFS到Funtoo (51)
- 到小公司去
- vector的初始化
- 把选中变量、方法时的高亮给弄没了,怎么找回来
- 初学Java之方法之间的组合运用