【leetcode】在旋转排序数组中查找(二分)
2017-09-27 14:13
405 查看
33. Search in Rotated Sorted Array
leetcode题目描述题目描述:
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.
题解:
二分查找 已排序的数组以某一点为转轴旋转,转轴未知,找到target在数组中的位置。 每次分两种情况,即分界点在中线左边还是右边,并对这两种情况再具体处理。 用first和last来不断缩小查找范围,最后逼近实际位置。 考虑数值范围明显可知的区间,即确定哪部分递增 如果前/后半部分递增,情况有两种: 1. target在递增区间 2. target不在此递增区间 由此可确定target具体范围
solution1:
class Solution { public: int search(const vector<int>& nums, int target) { int first = 0; int last = nums.size(); while (first != last) { int mid = (first + last) / 2; if (nums[mid] == target) { return mid; } if (nums[first] <= nums[mid]) { // 前半部分递增 if (nums[first] <= target && target < nums[mid]) { // target在递增部分(可直接确定范围) last = mid; } else { first = mid + 1; } } else { // 后半部分递增 if (nums[mid] < target && target <= nums[last-1]) { first = mid + 1; } else { last = mid; } } } return -1; } };
相关文章推荐
- LeetCode-Find Minimum in Rotated Sorted Array II-旋转排序数组找最小-二分查找
- 【leetcode】有重复的旋转排序数组查找(二分)
- leetcode 81. Search in Rotated Sorted Array II-旋转数组|二分查找
- leetcode 编程题 系列 (二分查找)旋转数组的查找、重复数字 33 153
- leetcode 题解:Search in Rotated Sorted Array II (旋转已排序数组查找2)
- leetcode 153. Find Minimum in Rotated Sorted Array 旋转数组(不重复)+二分查找
- 剑指Offer面试题8旋转数组的最小数字(二分查找)附带快排和按年龄排序
- leetcode 154. Find Minimum in Rotated Sorted Array II 旋转数组(重复)+二分查找
- leetcode 81. Search in Rotated Sorted Array II 旋转数组查找+二分查找
- LeetCode基础-查找-排序数组二分查找
- 二分查找与旋转排序数组 算法题
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- leetcode题解:Search in Rotated Sorted Array(旋转排序数组查找)
- LeetCode-Search in Rotated Sorted Array II-在旋转数组中搜索-二分查找
- leetcode 刷题之路 35 Search in Rotated Sorted Array II (旋转排序数组查找终极版)
- leetcode旋转数组查找 二分查找的变形
- 154.leetcode Find Minimum in Rotated Sorted Array II(hard)[排序数组 重复元素 二分查找]
- leetcode:Search for a Range(数组,二分查找)
- 旋转数组的二分查找
- 查找已排序的旋转后的数组中的数(Search in Rotated Sorted Array)