int search(vector<int>& nums, int target) {
for (int i = 0; i < (int)nums.size(); i++) {
if (nums[i] == target) return i;
}
return -1;
}
public int search(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
if (nums[i] == target) return i;
}
return -1;
}
def search(nums, target):
for i in range(len(nums)):
if nums[i] == target: return i
return -1
function search(nums: number[], target: number): number {
for (let i = 0; i < nums.length; i++) {
if (nums[i] === target) return i;
}
return -1;
}
int search(vector<int>& nums, int target) {
int n = nums.size();
int left = 0;
int right = n - 1;
while (left < right) {
int mid = (left + right) / 2;
if (nums[mid] > nums[right]) left = mid + 1;
else right = mid;
}
int pivot = left;
if (n > 0 && target >= nums[pivot] && target <= nums[n - 1]) {
left = pivot;
right = n - 1;
} else {
left = 0;
right = pivot - 1;
}
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) return mid;
if (nums[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
public int search(int[] nums, int target) {
int n = nums.length;
int left = 0;
int right = n - 1;
while (left < right) {
int mid = (left + right) / 2;
if (nums[mid] > nums[right]) left = mid + 1;
else right = mid;
}
int pivot = left;
if (n > 0 && target >= nums[pivot] && target <= nums[n - 1]) {
left = pivot;
right = n - 1;
} else {
left = 0;
right = pivot - 1;
}
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) return mid;
if (nums[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
def search(nums, target):
n = len(nums)
left = 0
right = n - 1
while left < right:
mid = (left + right) // 2
if nums[mid] > nums[right]: left = mid + 1
else: right = mid
pivot = left
if n > 0 and target >= nums[pivot] and target <= nums[n - 1]:
left = pivot
right = n - 1
else:
left = 0
right = pivot - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target: return mid
if nums[mid] < target: left = mid + 1
else: right = mid - 1
return -1
function search(nums: number[], target: number): number {
let left = 0;
let right = nums.length - 1;
while (left < right) {
const mid = Math.floor((left + right) / 2);
if (nums[mid] > nums[right]) left = mid + 1;
else right = mid;
}
const pivot = left;
if (target >= nums[pivot] && target <= nums[nums.length - 1]) {
left = pivot;
right = nums.length - 1;
} else {
left = 0;
right = pivot - 1;
}
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (nums[mid] === target) return mid;
if (nums[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
int search(vector<int>& nums, int target) {
int left = 0;
int right = (int)nums.size() - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) return mid;
if (nums[left] <= nums[mid]) {
if (nums[left] <= target && target < nums[mid]) right = mid - 1;
else left = mid + 1;
} else {
if (nums[mid] < target && target <= nums[right]) left = mid + 1;
else right = mid - 1;
}
}
return -1;
}
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) return mid;
if (nums[left] <= nums[mid]) {
if (nums[left] <= target && target < nums[mid]) right = mid - 1;
else left = mid + 1;
} else {
if (nums[mid] < target && target <= nums[right]) left = mid + 1;
else right = mid - 1;
}
}
return -1;
}
def search(nums, target):
left = 0
right = len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target: return mid
if nums[left] <= nums[mid]:
if nums[left] <= target < nums[mid]: right = mid - 1
else: left = mid + 1
else:
if nums[mid] < target <= nums[right]: left = mid + 1
else: right = mid - 1
return -1
function search(nums: number[], target: number): number {
let left = 0;
let right = nums.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (nums[mid] === target) return mid;
if (nums[left] <= nums[mid]) {
if (nums[left] <= target && target < nums[mid]) right = mid - 1;
else left = mid + 1;
} else {
if (nums[mid] < target && target <= nums[right]) left = mid + 1;
else right = mid - 1;
}
}
return -1;
}
int search(vector<int>& nums, int target) {
int left = 0;
int right = (int)nums.size() - 1;
int first = nums.empty() ? 0 : nums[0];
while (left <= right) {
int mid = left + ((right - left) >> 1);
long long num = ((nums[mid] < first) == (target < first)) ? (long long)nums[mid] : (target < first ? LLONG_MIN : LLONG_MAX);
if (num == target) return mid;
if (num < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
int first = nums.length == 0 ? 0 : nums[0];
while (left <= right) {
int mid = left + ((right - left) >> 1);
long num = ((nums[mid] < first) == (target < first)) ? nums[mid] : (target < first ? Long.MIN_VALUE : Long.MAX_VALUE);
if (num == target) return mid;
if (num < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
def search(nums, target):
left = 0
right = len(nums) - 1
first = nums[0] if nums else 0
while left <= right:
mid = left + ((right - left) >> 1)
num = nums[mid] if (nums[mid] < first) == (target < first) else (float('-inf') if target < first else float('inf'))
if num == target: return mid
if num < target: left = mid + 1
else: right = mid - 1
return -1
function search(nums: number[], target: number): number {
let left = 0;
let right = nums.length - 1;
const first = nums[0];
while (left <= right) {
const mid = left + ((right - left) >> 1);
const num = (nums[mid] < first) === (target < first) ? nums[mid] : (target < first ? -Infinity : Infinity);
if (num === target) return mid;
if (num < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}