You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functionbasicBinarySearch(arr: number[],target: number): number{letleft=0;letright=arr.length-1;while(left<=right){constmid=Math.floor((left+right)/2);if(arr[mid]===target){returnmid;}if(arr[mid]<target){left=mid+1;}else{right=mid-1;}}return-1;// 값을 찾지 못한 경우}
중복값이 있는 정렬된 배열에서 중복값중 가장 왼쪽에 있는 위치를 찾는것.
예) [1, 2, 2, 2, 3, 4]에서 가장 왼쪽의 2의 인덱스를 찾는 것
예시 코드
functionleftmostBinarySearch(arr: number[],target: number): number{letleft=0;letright=arr.length-1;letresult=-1;while(left<=right){constmid=Math.floor((left+right)/2);if(arr[mid]===target){result=mid;// 현재 위치 저장right=mid-1;// 왼쪽도 계속 탐색}elseif(arr[mid]<target){left=mid+1;}else{right=mid-1;}}returnresult;}
rotate된 정렬된 배열에서 rotate된 위치를 찾는 것
예) [4, 5, 6, 1, 2, 3]에서 rotate된 위치 1의 인덱스를 찾는것
예시 코드
functionfindRotationPoint(arr: number[]): number{letleft=0;letright=arr.length-1;// 이미 정렬된 경우if(arr[left]<arr[right])return0;while(left<right){constmid=Math.floor((left+right)/2);// 중간값이 첫 번째 값보다 크면// rotation point는 오른쪽에 있음if(arr[mid]>arr[right]){left=mid+1;}else{right=mid;}}returnleft;// rotation point의 인덱스}
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
이진 탐색은 정렬된 배열에서 특정 값을 찾는 효율적인 알고리즘입니다.
예시 문제
예) [1, 3, 5, 7, 9]에서 5의 인덱스를 찾는 것
예시 코드
예) [1, 2, 2, 2, 3, 4]에서 가장 왼쪽의 2의 인덱스를 찾는 것
예시 코드
예) [4, 5, 6, 1, 2, 3]에서 rotate된 위치 1의 인덱스를 찾는것
예시 코드
Beta Was this translation helpful? Give feedback.
All reactions