728x90
https://leetcode.com/problems/search-in-rotated-sorted-array/description/
public int Search(int[] nums, int target)
{
return Recursive(nums, 0, nums.Length - 1, target);
}
private int Recursive(int[] nums, int start, int end, int target)
{
int pivot = (start + end) / 2;
if (nums[pivot] == target)
return pivot;
if (start == end)
return -1;
if (end - start == 1)
{
if (nums[start] == target)
return start;
else if (nums[end] == target)
return end;
else
return -1;
}
if (nums[start] < nums[pivot])
{
if ((nums[pivot] > target) && (nums[start] <= target))
{
return BSearch(nums, start, pivot - 1, target);
}
else
{
return Recursive(nums, pivot + 1, end, target);
}
}
else
{
if ((nums[pivot] < target) && (nums[end] >= target))
{
return BSearch(nums, pivot + 1, end, target);
}
else
{
return Recursive(nums, start, pivot - 1, target);
}
}
}
private int BSearch(int[] nums, int start, int end, int target)
{
while (true)
{
if ((start >= end) && (nums[start] != target))
return -1;
int pivot = (start + end) / 2;
if (pivot < 0)
return -1;
if (nums[pivot] == target)
{
return pivot;
}
else if (nums[pivot] > target)
{
end = pivot - 1;
}
else
{
start = pivot + 1;
}
}
}
728x90
'Programing > Algorithm' 카테고리의 다른 글
[LeetCode] 36. Valid Sudoku (0) | 2025.02.13 |
---|---|
[LeetCode] 34. Find First and Last Position of Element in Sorted Array (0) | 2025.02.12 |
[LeetCode] 22. Generate Parentheses (0) | 2025.02.10 |
[LeetCode] 19. Remove Nth Node From End of List (0) | 2025.02.10 |
[LeetCode] 17. Letter Combinations of a Phone Number (0) | 2025.02.10 |