81. Search in Rotated Sorted Array II
2018-01-15 18:24
211 查看
和33. Search
in Rotated Sorted Array一样。直接上代码
class Solution {
public:
bool search(vector<int>& nums, int target) {
if(nums.size()<1) return false;
if(nums.size()<=6){
for(int i=0;i<nums.size();i++){
if(nums[i]==target){
return true;
}
}
return false;
}
int re =0;
re = thirdSearchPos(nums,0,nums.size() - 1,target);
if(re == -1) return false;
return true;
}
int thirdSearchPos(vector<int>& nums,int left, int right,int target) {
if(right - left<=6){
for(int i=0;i<nums.size();i++){
if(nums[i]==target){
return i;
}
}
return -1;
}
int firstThird = left + (right - left)/3;
int secondThird = firstThird + (right - left)/3;
if(target==nums[left]) return left;
if(target==nums[firstThird]) return firstThird;
if(target==nums[secondThird]) return secondThird;
if(target==nums[right]) return right;
int re = -1;
if(nums[left]<=nums[firstThird] && target>nums[left] && target<nums[firstThird]){
re = binarySearchPos(nums,left,firstThird,target);
}else if(target>nums[left] && target<nums[firstThird]){
re = thirdSearchPos(nums,left,firstThird,target);
}
if(re!=-1) return re;
if(nums[secondThird]<=nums[right] && target>nums[secondThird] && target<nums[right]){
re = binarySearchPos(nums,secondThird,right,target);
}else if(target>nums[secondThird] && target<nums[right]){
re = thirdSearchPos(nums,secondThird,right, target);
}
if(re!=-1) return re;
return thirdSearchPos(nums,firstThird,secondThird, target);
}
int binarySearchPos(vector<int>& nums1, int start, int end, int num) {
int left = start, right = end, medium = 0;
while (left<right) {
medium = left + (right - left) / 2;
if (nums1[medium] - num >0) {
right = medium;
}
else if (num - nums1[medium] >0) {
left = medium + 1;
}
else {
return medium;
}
}
int left1 = -1;
if (nums1[left] == num)
left1 = left;
return left1;
}
};
in Rotated Sorted Array一样。直接上代码
class Solution {
public:
bool search(vector<int>& nums, int target) {
if(nums.size()<1) return false;
if(nums.size()<=6){
for(int i=0;i<nums.size();i++){
if(nums[i]==target){
return true;
}
}
return false;
}
int re =0;
re = thirdSearchPos(nums,0,nums.size() - 1,target);
if(re == -1) return false;
return true;
}
int thirdSearchPos(vector<int>& nums,int left, int right,int target) {
if(right - left<=6){
for(int i=0;i<nums.size();i++){
if(nums[i]==target){
return i;
}
}
return -1;
}
int firstThird = left + (right - left)/3;
int secondThird = firstThird + (right - left)/3;
if(target==nums[left]) return left;
if(target==nums[firstThird]) return firstThird;
if(target==nums[secondThird]) return secondThird;
if(target==nums[right]) return right;
int re = -1;
if(nums[left]<=nums[firstThird] && target>nums[left] && target<nums[firstThird]){
re = binarySearchPos(nums,left,firstThird,target);
}else if(target>nums[left] && target<nums[firstThird]){
re = thirdSearchPos(nums,left,firstThird,target);
}
if(re!=-1) return re;
if(nums[secondThird]<=nums[right] && target>nums[secondThird] && target<nums[right]){
re = binarySearchPos(nums,secondThird,right,target);
}else if(target>nums[secondThird] && target<nums[right]){
re = thirdSearchPos(nums,secondThird,right, target);
}
if(re!=-1) return re;
return thirdSearchPos(nums,firstThird,secondThird, target);
}
int binarySearchPos(vector<int>& nums1, int start, int end, int num) {
int left = start, right = end, medium = 0;
while (left<right) {
medium = left + (right - left) / 2;
if (nums1[medium] - num >0) {
right = medium;
}
else if (num - nums1[medium] >0) {
left = medium + 1;
}
else {
return medium;
}
}
int left1 = -1;
if (nums1[left] == num)
left1 = left;
return left1;
}
};
相关文章推荐
- LeetCode 33,81. Search in Rotated Sorted Array i, ii
- Leetcode 81. Search in Rotated Sorted Array II
- [Leetcode] 81. Search in Rotated Sorted Array II 解题报告
- 81. Search in Rotated Sorted Array II
- [81]Search in Rotated Sorted Array II
- leetcode_81——Search in Rotated Sorted Array II(二分查找)
- 【LEETCODE】81-Search in Rotated Sorted Array II [Python]
- 81. Search in Rotated Sorted Array II
- 81 Search in Rotated Sorted Array II
- Leetcode刷题记—— 81. Search in Rotated Sorted Array II(在翻转数组中查找2)
- 81. Search in Rotated Sorted Array II
- LeetCode OJ 81 Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II LeetCode
- 81 Search in Rotated Sorted Array II
- LeetCode-81.Search in Rotated Sorted Array II
- 81. Search in Rotated Sorted Array II
- [leetcode] 81. Search in Rotated Sorted Array II
- !leetcode[33&81]:Search in Rotated Sorted Array[I & II]
- 【Leet Code】81. Search in Rotated Sorted Array II---Medium
- 81. Search in Rotated Sorted Array II**