81. Search in Rotated Sorted Array II
来源:互联网 发布:windows arm模拟器 编辑:程序博客网 时间:2024/04/29 11:17
假设某个按照升序排序的数组在某个元素前旋转(例如:0 1 2 4 5 6 7 =>4 5 6 7 0 1 2)。给定一个目标值,判断该数组是否包含这个元素,如果包含返回对应TRUE,否则返回FALSE。可以存在重复元素
解题思路:
此题与第33题基本相似,但可以存在重复元素。所以第一思路就是按照33题的思路进行二分查找。由于存在重复元素,可能导致无法判断哪一侧是有序数据,需要在判断之间去除重复元素:
while (nums[m] == nums[mid] && nums[n] == nums[mid]){ m++; n--;}
利用循环找到两边第一次出现不与中间元素重复 的位置,然后进行判断。
实现:
bool search(vector<int>& nums, int target) { int n = nums.size() - 1; int m = 0; int mid = 0; while (m <= n) { mid = (m + n) / 2; if (nums[mid] == target) { return true; } while (nums[m] == nums[mid] && nums[n] == nums[mid]) { m ++; n --; } if (nums[m] <= nums[mid]) { if (nums[m] <= target && nums[mid] > target) { n = mid - 1; } else { m = mid + 1; } } else { if (nums[mid] < target && nums[n] >= target) { m = mid + 1; } else { n = mid - 1; } } } return false;}
阅读全文
0 0
- 81.Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- B
- ABBYY FineReader 12激活过程详解
- Tomcat配置HTPPS访问
- jdbc注册驱动的三种方式
- Hello World!
- 81. Search in Rotated Sorted Array II
- Android Wi-Fi 修改国家码(QCOM平台)
- [IMX6Q][Android5.1]移植笔记 --- uboot_v2015.04移植
- c#调用 SQL SERVER
- Tree-----297. Serialize and Deserialize Binary Tree(二叉树的序列化与反序列化)
- 样式的层级关系,选择器优先级,样式冲突,以及抽离样式模块怎么写,说出思路,有无实践经验
- 引用js文件时的编码格式问题
- Zookeeper集群搭建(伪集群)
- Windows驱动开发环境搭建(Visual Studio 2015 + WDK)