Leetcode之Search in Rotated Sorted Array II 问题
来源:互联网 发布:sql server 认证 编辑:程序博客网 时间:2024/06/14 08:33
问题描述:
Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
Write a function to determine if a given target is in the array.
The array may contain duplicates.
问题来源:Search in Rotated Sorted Array II (详细地址:https://leetcode.com/problems/search-in-rotated-sorted-array-ii/description/)
思路分析:和Search in Rotated Sorted Array 是同一个意思,只是说这里是允许重复数字出现而已,所以我们要寻找出更加普遍的解法来解决此类问题了,有点归纳演绎中的特殊到一般的意思,。我们换个角度思考下,不再找最小索引了,还是从二分查找开始,我们这次比较nums[low]和nums[mid]的大小关系,low表示左边的索引,mid表示中间的索引,high表示最右边的索引:
1.)nums[low] < nums[mid]表明啥?说明左边的数字是有序的,我们接着比较target是否位于二者之间 ,如果是的话,那么我们动的就是high指针,high = mid - 1,不在的话,我们就跨过整个左半部分,low = mid + 1;
2.)nums[low] = nums[mid],我们不敢乱下定论,那么我们就让low++,往右走一格肯定是没问题的;
3.)nums[low] > nums[mid]说明右半部分大体是有序的,我们接着判断target是否位于这二者之间,位于的话,那我们就动low指针,low = mid + 1,不在的话,我们就挪动high指针,high = mid - 1.
代码:
特殊情况处理及举例:
整个搜索过程(同样适用于Search in Rotated Sorted Array 中没有重复数字出现的情况):
- Leetcode之Search in Rotated Sorted Array II 问题
- leetcode之Search in Rotated Sorted Array 和Search in Rotated Sorted Array II
- LeetCode: Search in Rotated Sorted Array II
- LeetCode Search in Rotated Sorted Array II
- LeetCode : Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array II
- [Leetcode] Search in Rotated Sorted Array II
- [leetcode] Search in Rotated Sorted Array II
- [LeetCode]Search in Rotated Sorted Array II
- [leetcode] Search in Rotated Sorted Array II
- LeetCode-Search in Rotated Sorted Array II
- LeetCode - Search in Rotated Sorted Array II
- 【Leetcode】Search in Rotated Sorted Array II
- Leetcode: Search in Rotated Sorted Array II
- 【leetcode】Search in Rotated Sorted Array II
- leetcode Search in Rotated Sorted Array II
- Leetcode: Search in Rotated Sorted Array II
- [LeetCode] Search in Rotated Sorted Array II
- 身份证验证
- linux-svn命令
- Windows下Qt 5.6.3 for Android开发环境搭建
- 把数组排成最小的数
- centos搭建svn及自动推送
- Leetcode之Search in Rotated Sorted Array II 问题
- 搬瓦工(Bandwagon) 重装系统
- Liu_runda 的简单题 随(rand) 倍增优化 概率DP
- 170923_Spring Cloud 微服务实战(翟永超著) 读书笔记(一)_什么是Spring Cloud?
- codeforces 863D
- JDBC链接警告WARN: Establishing SSL connection without server's identity verification is not recommended.
- LeetCode-Longest Substring Without Repeating Characters
- Mysql 事务的四种隔离级别剖析
- 块状标签-分区标签-div边框显示需要那几个属性?