In this post, we are going to solve the Search in Rotated Sorted Array II Leetcode Solution problem of Leetcode. This Leetcode problem is done in many programming languages like C++, Java, and Python.

Problem
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
.
You must decrease the overall operation steps as much as possible.
Example 1:
Input: nums = [2,5,6,0,0,1,2], target = 0 Output: true
Example 2:
Input: nums = [2,5,6,0,0,1,2], target = 3 Output: false
Constraints:
1 <= nums.length <= 5000
-104 <= nums[i] <= 104
nums
is guaranteed to be rotated at some pivot.-104 <= target <= 104
Now, let’s see the leetcode solution of Search in Rotated Sorted Array II Leetcode Solution.
Search in Rotated Sorted Array II Leetcode Solution in Python
class Solution: def search(self, nums: List[int], target: int) -> bool: l = 0 r = len(nums) - 1 while l <= r: m = (l + r) // 2 if nums[m] == target: return True if nums[l] == nums[m] == nums[r]: l += 1 r -= 1 elif nums[l] <= nums[m]: # nums[l..m] are sorted if nums[l] <= target < nums[m]: r = m - 1 else: l = m + 1 else: # nums[m..n - 1] are sorted if nums[m] < target <= nums[r]: l = m + 1 else: r = m - 1 return False
Search in Rotated Sorted Array II Leetcode Solution in CPP
class Solution { public: bool search(vector<int>& nums, int target) { int l = 0; int r = nums.size() - 1; while (l <= r) { const int m = (l + r) / 2; if (nums[m] == target) return true; if (nums[l] == nums[m] && nums[m] == nums[r]) { ++l; --r; } else if (nums[l] <= nums[m]) { // nums[l..m] are sorted if (nums[l] <= target && target < nums[m]) r = m - 1; else l = m + 1; } else { // nums[m..n - 1] are sorted if (nums[m] < target && target <= nums[r]) l = m + 1; else r = m - 1; } } return false; } };
Search in Rotated Sorted Array II Leetcode Solution in Java
class Solution { public boolean search(int[] nums, int target) { int l = 0; int r = nums.length - 1; while (l <= r) { final int m = (l + r) / 2; if (nums[m] == target) return true; if (nums[l] == nums[m] && nums[m] == nums[r]) { ++l; --r; } else if (nums[l] <= nums[m]) { // nums[l..m] are sorted if (nums[l] <= target && target < nums[m]) r = m - 1; else l = m + 1; } else { // nums[m..n - 1] are sorted if (nums[m] < target && target <= nums[r]) l = m + 1; else r = m - 1; } } return false; } }
Note: This problem Search in Rotated Sorted Array II is generated by Leetcode but the solution is provided by Chase2learn This tutorial is only for Educational and Learning purposes.
NEXT: Remove Duplicates from Sorted List II Leetcode Solution