LeetCode Online Judge 题目C# 练习 - Search in Rotated Sorted Array II
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.
1 public static bool SearchinRotatedSortedAarrayII(int[] A, int target) 2 { 3 return BinarySearchRotatedSortedArrayII(A, 0, A.Length - 1, target); 4 } 5 6 public static bool BinarySearchRotatedSortedArrayII(int[] A, int l, int r, int target) 7 { 8 if (l > r) 9 return false; 10 11 int m = (l + r) / 2; 12 13 if (target == A[m]) 14 return true; 15 16 // if duplicate is allowed, we have to search both upper and lower halves 17 // corner case : 8,9,5,8,8,8,8,8 and 8,8,8,8,9,5,8 18 if (A[m] == A[l] && A[m] == A[r]) 19 { 20 return BinarySearchRotatedSortedArrayII(A, l, m - 1, target) || 21 BinarySearchRotatedSortedArrayII(A, m + 1, r, target); 22 } 23 24 if (A[m] >= A[l]) 25 { 26 if (target >= A[l] && target < A[m]) 27 r = m - 1; 28 else 29 l = m + 1; 30 31 return BinarySearchRotatedSortedArrayII(A, l, r, target); 32 } 33 else 34 { 35 if (target > A[m] && target <= A[r]) 36 l = m + 1; 37 else 38 r = m - 1; 39 40 return BinarySearchRotatedSortedArrayII(A, l, r, target); 41 } 42 43 }
代码分析:
如注释里说的,如果允许重复,那就要前半部后半部都要找。 我承认,我掉入陷阱里了!!! 如果数组全是 0 , 要你找1. 那么时间复杂度是多少?O(n)吧。既然是O(n),干嘛不就loop一遍呢?
1 public static bool SearchinRotatedSortedAarrayIIOpt(int[] A, int target) 2 { 3 for (int i = 0; i < A.Length; i++) 4 { 5 if (A[i] == target) 6 return true; 7 } 8 return false; 9 }
转载于:https://www.cnblogs.com/etcow/archive/2012/10/16/2727002.html
LeetCode Online Judge 题目C# 练习 - Search in Rotated Sorted Array II相关推荐
- LeetCode Search in Rotated Sorted Array II -- 有重复的旋转序列搜索
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- 【leetcode】Search in Rotated Sorted Array II(middle)☆
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- LeetCode Search in Rotated Sorted Array II
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would t ...
- leetcode 81 Search in Rotated Sorted Array II ----- java
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- leetcode - Search in Rotated Sorted Array II
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- [算法题] Search in Rotated Sorted Array ii
题目内容 题目来源:LeetCode Suppose an array sorted in ascending order is rotated at some pivot unknown to yo ...
- 81. Search in Rotated Sorted Array II
题目: Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would ...
- Search in Rotated Sorted Array II
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- [leetcode]Search in Rotated Sorted Array II
这道题目仍然是二分,去掉不可能的部分.用了递归,在重复的情况下,就是有可能最左边的和最右边的相等,此时就不能直接判断出区间外的元素,左右两边同时递归.有重复元素的时候,在bad case的时候会退化为 ...
最新文章
- V8 JavaScript引擎研究(三)垃圾回收器的实现
- Microsoft.Data.ConnectionUI.DataConnectionDialog
- C#软件自动更新程序
- Karp 21个规约问题 笔记 (1~13个规约问题)
- oracle 11g安装时提示environment variable:PATH 失败
- 【Linux网络编程】Linux多播问题(No such device)解决方法
- C# 读取app.config配置文件 节点键值,提示 配置系统未能初始化 错误的解决方案...
- PX4 CMakeLists.txt 文件剖析
- 生产者和消费者问题变形
- ascii码二进制十进制十六进制对照表
- js数据在html乱码,通过网页查看JS源码中汉字显示乱码的解决方法
- java毕业设计博弈论学习网站Mybatis+系统+数据库+调试部署
- 京东商家下单未付款?订单催付教程
- java一道多线程题,子线程循环10次,主线程接着循环100次,如此循环50次的问题
- 【红帽认证参考】常见问题解答
- 自媒体怎么快速入门?这几个技巧一定要掌握好
- 大唐波斯将军 机器人_波斯帝国被阿拉伯所灭,末代王子三次求助大唐,为何唐朝没有出兵?...
- Docker 环境下 Prometheus 和 Grafana 监控 Mysql
- backupPC安装与使用
- 安卓之ViewFlipper实现渐变视差导航页