lintcode-medium-Search in Rotated Sorted Array II
2016-04-05 17:50
477 查看
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.
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.
public class Solution { /** * param A : an integer ratated sorted array and duplicates are allowed * param target : an integer to be search * return : a boolean */ public boolean search(int[] A, int target) { // write your code here if(A == null || A.length == 0) return false; int left = 0; int right = A.length - 1; return search(A, target, left, right); } public boolean search(int[] A, int target, int left, int right){ if(left > right) return false; if(left == right){ if(A[left] == target) return true; else return false; } int mid = left + (right - left) / 2; if(A[mid] == target) return true; if(A[mid] > target){ if(A[mid] > A[left]){ boolean flag1 = search(A, target, left, mid - 1); boolean flag2 = search(A, target, mid + 1, right); if(!flag1 && !flag2) return false; else if(!flag1) return flag2; else return flag1; } else if(A[mid] < A[left]){ return search(A, target, left, mid - 1); } else{ return search(A, target, left + 1, right); } } else{ if(A[mid] > A[left]){ return search(A, target, mid + 1, right); } else if(A[mid] < A[left]){ boolean flag1 = search(A, target, left, mid - 1); boolean flag2 = search(A, target, mid + 1, right); if(!flag1 && !flag2) return false; else if(!flag1) return flag2; else return flag1; } else{ return search(A, target, left + 1, right); } } } }
相关文章推荐
- VIM中的多行删除与复制
- Python如何安装egg组件
- 超赞的MJRefresh 的实现
- [前端]JavaScript滑动门特效
- iOS 9学习系列:如何使用ATS提高应用的安全性
- GB28181修改补充文件--雨刷和灯光的控制协议
- Spring Boot教程(二)--- 推荐的基础 POM 文件和自动配置
- 排列 组合
- python常用内置模块,执行系统命令的模块
- SharePoint 2013 Designer系列之数据视图
- JS实现 进度条 不用控件 超级简单
- hdu 1429 胜利大逃亡(续)(bfs+位压缩)
- 《构建之法》之第四章读后感
- webpack结合gulp打包
- CentOS 6.5下设置主机之间的SSH免密登录
- $.extend():将两个或更多对象的内容合并到第一个对象。
- iOS知识----获取HTML5 的 标题(title)
- win7下maven安装
- VNTHadoop之路(I)--实体机安装Ubuntu
- Bootstrap提供的jQuery插件——弹出消息框,三个插件函数: