이진 검색 기법
정황:
입력을 정렬해야 합니다.
단계:
두 가지 유형의 접근 방식: 재귀 및 반복
재귀적 접근:
class Solution {
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length -1;
return binarySearch(nums, target, left, right);
}
public int binarySearch(int[] nums, int target, int left, int right){
int middle = (right + left) / 2;
if(right < left){
return -1;
}
if(target == nums[middle]){
return middle;
}
if(target < nums[middle]){
return binarySearch(nums, target, left, middle - 1);
} else {
return binarySearch(nums, target, middle + 1, right);
}
}
}
반복적 접근:
class Solution {
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length -1;
while (right >= left){
int middle = (right + left) / 2;
if(target == nums[middle]){
return middle;
}
if(target < nums[middle]){
right = middle - 1;
} else {
left = middle + 1;
}
}
return -1;
}
}
Reference
이 문제에 관하여(이진 검색 기법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tammyvocs/binary-search-technique-2oi7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)