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