BinarySearch
Published at 2021-11-08
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums) - 1
while left <= right:
center = left + (right - left) // 2 #
if nums[center] == target:
return center
elif nums[center] < target:
left = center + 1
elif nums[center] > target:
right = center - 1
return -1
# 주제에 맞게 풀기: 가운데 있는 값이 찾는 값인지 비교 -> 아니라면 대,소 비교해서 왼쪽포인터 혹은 오른쪽포인터를 1씩 조절
# 다시 가운데 값을 구해서 비교. /**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function (nums, target) {
let start = 0;
let end = nums.length - 1;
while (start <= end) {
const mid = Math.round((start + end) / 2);
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
start = mid + 1;
} else {
end = mid - 1;
}
}
return -1;
};
/*
[이진 탐색]
nums가 오름차순으로 주어지기 때문에 이진탐색 알고리즘 사용할 수 있음
왼, 오를 중간값으로 대체하면서 원하는 타겟넘버를 찾아나간다.
*/