33. Search in Rotated Sorted Array
来源:互联网 发布:java命令行导入jar包 编辑:程序博客网 时间:2024/04/28 08:54
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.
这道题让在旋转数组中搜索一个给定值,若存在返回坐标,若不存在返回-1。我们还是考虑二分搜索法,但是这道题的难点在于我们不知道原数组在哪旋转。
方法一:
int SearchInRotatedSortedArray::search1(vector<int>& nums, int target){ return searchFrom(nums, target, 0, nums.size() - 1);}int SearchInRotatedSortedArray::searchFrom(vector<int>& nums, int target, int begin, int end){ if (begin > end) return -1; int indexMid = (begin + end) / 2; int valueMid = nums[indexMid]; if (valueMid == target) { return indexMid; } else if (valueMid > target) { if (target > nums[end]) { return searchFrom(nums, target, begin, indexMid - 1); } else { int value = searchFrom(nums, target, begin, indexMid - 1); return value == -1 ? searchFrom(nums, target, indexMid + 1, end) : value; } } else if (valueMid < target) { if (target < nums[begin]) { return searchFrom(nums, target, indexMid + 1, end); } else { int value = searchFrom(nums, target, begin, indexMid - 1); return value == -1 ? searchFrom(nums, target, indexMid + 1, end) : -1; } }}
方法二:
int SearchInRotatedSortedArray::search2(vector<int>& A, int target) { int l = 0; int r = A.size() - 1; while (l <= r) { int mid = (l + r) / 2; if (target == A[mid]) return mid; if (A[l] <= A[r]) { if (target < A[mid]) r = mid - 1; else l = mid + 1; } else if (A[l] <= A[mid]) { if (target > A[mid] || target < A[l]) l = mid + 1; else r = mid - 1; } else { if (target < A[mid] || target > A[r]) r = mid - 1; else l = mid + 1; } } return -1;}
阅读全文
0 0
- [LeetCode]33.Search in Rotated Sorted Array
- LeetCode --- 33. Search in Rotated Sorted Array
- LeetCode 33.Search in Rotated Sorted Array
- [Leetcode] 33. Search in Rotated Sorted Array
- 33.Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- Leetcode-33.Search in Rotated Sorted Array.
- [leetcode] 33. Search in Rotated Sorted Array
- Leetcode 33. Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- 33. Search in Rotated Sorted Array
- 连续第八天总结
- Response对象
- ShuffleNet在Caffe框架下的实现
- okhttp
- 总结
- 33. Search in Rotated Sorted Array
- effective java(15) 之使可变性最小化
- Chris Richardson 微服务系列 第二篇 构建微服务之使用API网关
- bzoj2730 [HNOI2012]矿场搭建 tarjan 点双连通分量
- LightOJ1079(概率+01背包)
- 文件或文件夹无法删除 解决方法
- 【python学习笔记】第一个python程序
- 基础练习 字母图形
- 判断学生成绩是否有效