【LeetCode算法练习(C++)】Search in Rotated Sorted Array
来源:互联网 发布:yy网络怎么创建直播间 编辑:程序博客网 时间:2024/06/05 04:26
题目:
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).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.
链接:Search in Rotated Sorted Array
解法:一次二分查找确定两个连续递增序列的左右边界,判断待查找数字处于哪个序列中,再在该序列中进行一次二分查找找到位置。时间O(logn)
class Solution {public: int search(vector<int>& nums, int target) { if (nums.size() == 0) return -1; else if (nums.size() == 1) { if (nums[0] == target) return 0; else return -1; } int l = 0, r = nums.size() - 1; while (l < r && nums[l] > nums[r]) { int m = (l + r) / 2; if (nums[m] > nums[l]) l = m; else if (nums[m] < nums[r]) r = m; else break; } if (target >= nums[0] && nums[l] > nums[r]) { r = l; l = 0; } else if (nums[l] > nums[r]) { l = l + 1; r = nums.size() - 1; } if (nums[l] > target || nums[r] < target) return -1; while (l <= r) { int m = (l + r) / 2; if (nums[m] == target) return m; else if (nums[m + 1] == target) return m + 1; else if (nums[m] < target && nums[m + 1] > target) return -1; else if (nums[m] < target) l = m; else r = m; } }};
Runtime: 6 ms
阅读全文
0 0
- 【LeetCode算法练习(C++)】Search in Rotated Sorted Array
- [leetcode][search] Search in Rotated Sorted Array
- LeetCode算法题目: Search in Rotated Sorted Array
- [C++]LeetCode: 43 Search in Rotated Sorted Array
- [C++]LeetCode: 44 Search in Rotated Sorted Array II
- [LeetCode] 033. Search in Rotated Sorted Array (Hard) (C++)
- [leetcode-33]Search in Rotated Sorted Array(C)
- [leetcode-81]Search in Rotated Sorted Array II(C)
- leetcode刷题系列C++-Search in Rotated Sorted Array
- 【C++】【LeetCode】33. Search in Rotated Sorted Array
- Leetcode c语言-Search in Rotated Sorted Array
- 数据结构与算法 LeetCode编程练习--Search in Rotated array
- LeetCode: Search in Rotated Sorted Array
- LeetCode: Search in Rotated Sorted Array II
- LeetCode Search in Rotated Sorted Array
- LeetCode Search in Rotated Sorted Array II
- [Leetcode] Search in Rotated Sorted Array
- LeetCode : Search in Rotated Sorted Array
- nglix 1113 错误
- 设计模式--中介者模式
- LeeCode 451. Sort Characters By Frequency
- Mahmoud and a Message CodeForces
- 数据库的四种隔离级别
- 【LeetCode算法练习(C++)】Search in Rotated Sorted Array
- Shell环境和变量生存期
- 设计模式--面向对象设计原则、UML
- 决策树算法以及熵、条件熵、信息增益等整理
- code forces 894C [分割构造gcd]
- [OpenGL] 初识GLFW
- 为ActiveMQ服务器设置安全验证
- Celery-4.1 用户指南: Routing Tasks
- ubuntu 安装redis两种方式 教程