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相关推荐

  1. LeetCode Search in Rotated Sorted Array II -- 有重复的旋转序列搜索

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  2. 【leetcode】Search in Rotated Sorted Array II(middle)☆

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  3. LeetCode Search in Rotated Sorted Array II

     Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would t ...

  4. leetcode 81 Search in Rotated Sorted Array II ----- java

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  5. leetcode - Search in Rotated Sorted Array II

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  6. [算法题] Search in Rotated Sorted Array ii

    题目内容 题目来源:LeetCode Suppose an array sorted in ascending order is rotated at some pivot unknown to yo ...

  7. 81. Search in Rotated Sorted Array II

    题目: Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would ...

  8. Search in Rotated Sorted Array II

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  9. [leetcode]Search in Rotated Sorted Array II

    这道题目仍然是二分,去掉不可能的部分.用了递归,在重复的情况下,就是有可能最左边的和最右边的相等,此时就不能直接判断出区间外的元素,左右两边同时递归.有重复元素的时候,在bad case的时候会退化为 ...

最新文章

  1. V8 JavaScript引擎研究(三)垃圾回收器的实现
  2. Microsoft.Data.ConnectionUI.DataConnectionDialog
  3. C#软件自动更新程序
  4. Karp 21个规约问题 笔记 (1~13个规约问题)
  5. oracle 11g安装时提示environment variable:PATH 失败
  6. 【Linux网络编程】Linux多播问题(No such device)解决方法
  7. C# 读取app.config配置文件 节点键值,提示 配置系统未能初始化 错误的解决方案...
  8. PX4 CMakeLists.txt 文件剖析
  9. 生产者和消费者问题变形
  10. ascii码二进制十进制十六进制对照表
  11. js数据在html乱码,通过网页查看JS源码中汉字显示乱码的解决方法
  12. java毕业设计博弈论学习网站Mybatis+系统+数据库+调试部署
  13. 京东商家下单未付款?订单催付教程
  14. java一道多线程题,子线程循环10次,主线程接着循环100次,如此循环50次的问题
  15. 【红帽认证参考】常见问题解答
  16. 自媒体怎么快速入门?这几个技巧一定要掌握好
  17. 大唐波斯将军 机器人_波斯帝国被阿拉伯所灭,末代王子三次求助大唐,为何唐朝没有出兵?...
  18. Docker 环境下 Prometheus 和 Grafana 监控 Mysql
  19. backupPC安装与使用
  20. 安卓之ViewFlipper实现渐变视差导航页

热门文章

  1. 【MySQL】【备份】mydumper安装与使用细节
  2. redis 命令行 操作
  3. 网络管理员的任务与职责
  4. MIT自适应律MRAC的理解和MATLAB实现
  5. linux下socket调试,linux 下的socket 调试工具 netcat 使用
  6. 第六课:GNN的可解释性
  7. AttributeError: module 'tensorflow' has no attribute 'Session'
  8. NBA球星杜兰特之前投资Coinbse目前已获利达61.5倍
  9. SAP License:SAP会计凭证抬头的字段状态控制
  10. 小微金融的常规策略架构与流程是什么?