There is an integer array nums sorted in non-decreasing order (not necessarily with distinct values).
Before being passed to your function, nums is rotated at an unknown pivot index k (0 <= k < nums.length) such that the resulting array is [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]] (0-indexed). For example, [0,1,2,4,4,4,5,6,6,7] might be rotated at pivot index 5 and become [4,5,6,6,7,0,1,2,4,4].
Given the array nums after the rotation and an integer target, return true if target is in nums, or false if it is not in nums.
1 2 3 4 5 6 7 8 9
classSolution { public: boolsearch(vector<int>& nums, int target){ for(auto& num : nums) if(num == target) returntrue; returnfalse; } };
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
classSolution { public: boolsearch(vector<int>& nums, int target){ if(nums.size() == 1) return nums[0] == target; if(nums[0] == target) returntrue; for(int i = 1; i < nums.size(); i++) { if(nums[i] < nums[i - 1]) { if(nums[0] < target) returnfalse; auto it = lower_bound(nums.begin() + i, nums.end(), target); return it != end(nums) && *it == target; } elseif(nums[i] == target) returntrue; } returnfalse; } };