File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * 주어진 배열에서 타겟의 인덱스를 찾아 반환하는 함수
3+ * @param {number[] } nums
4+ * @param {number } target
5+ * @return {number }
6+ */
7+ const search = function ( nums , target ) {
8+ let left = 0 ;
9+ let right = nums . length ;
10+ let mid = Math . floor ( ( left + right ) / 2 ) ;
11+
12+ while ( left < right ) {
13+ mid = Math . floor ( ( left + right ) / 2 ) ;
14+
15+ if ( nums [ mid ] === target ) break ;
16+
17+ // left부터 mid까지 잘 정렬되어 있는 경우 (=> rotate된 부분은 mid부터 right 사이에 있음)
18+ if ( nums [ left ] < nums [ mid ] ) {
19+ // 정렬된 left부터 mid 사이에 타겟이 있는 경우
20+ if ( nums [ left ] <= target && target <= nums [ mid ] ) {
21+ right = mid ;
22+ } else {
23+ left = mid + 1 ;
24+ }
25+ }
26+ // mid부터 right까지 잘 정렬되어 있는 경우 (=> rotate된 부분은 left부터 mid 사이에 있음)
27+ else {
28+ // 정렬된 mid부터 right 사이에 타겟이 있는 경우
29+ if ( nums [ mid ] <= target && target <= nums [ right - 1 ] ) {
30+ left = mid ;
31+ } else {
32+ right = mid ;
33+ }
34+ }
35+ }
36+
37+ return nums [ mid ] === target ? mid : - 1 ;
38+ } ;
39+
40+ // O(log n)
41+ // O(1)
You can’t perform that action at this time.
0 commit comments