이진 검색을 사용해 원사는 값의 index를 찾는 문제입니다.
이진 검색은 정렬되어 있는 배열에서 중간의 값을 선택해, 그 값과 찾고자 하는 값을 비교해 찾는 방식입니다.
만약 중앙값이 찾는 값보다 크면 그 값은 새로운 최대값이 되고, 작으면 그 값은 새로운 최솟값이 됩니다.
그 후 다시 최소값과 최대값의 index를 사용해 그 중앙값을 찾아 비교를 목표값을 찾을 때까지 반복해줍니다.
int search(std::vector<int>& nums, int target) {
int l = 0, r = nums.size() - 1;
while (l <= r) {
int mid = l + static_cast<int>((r - l) * 0.5f); // 중간 값
if (nums[mid] > target) // 중간 값이 더 크면
r = mid - 1;
else if (nums[mid] < target) // 중간 값이 더 작으면
l = mid + 1;
else // 찾았으면 index를 return
return mid;
}
return -1; // 배열에 없으면
}
'Algorithm 문제풀이 > Leetcode' 카테고리의 다른 글
(Easy - Dynamic Programming) Leetcode - 338. Counting Bits (0) | 2024.06.22 |
---|---|
(Easy - Binary Search) Leetcode - 744. Find Smallest Letter Greater Than Target (0) | 2024.06.21 |
(Easy - Backtracking) Leetcode - 257. Binary Tree Paths (0) | 2024.06.20 |
(Easy - BFS) Leetcode - 111. Minimum Depth of Binary Tree (0) | 2024.06.19 |
(Easy - BFS) Leetcode - 637. Average of Levels in Binary Tree (0) | 2024.06.19 |