File tree Expand file tree Collapse file tree 2 files changed +54
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 2 files changed +54
-0
lines changed Original file line number Diff line number Diff line change 1+ // 시간복잡도: O(n)
2+ // 공간복잡도: O(1)
3+
4+ /**
5+ * @param {number[] } nums
6+ * @return {boolean }
7+ */
8+ var canJump = function ( nums ) {
9+ let fast = 0 ;
10+
11+ for ( let i = 0 ; i < nums . length ; i ++ ) {
12+ if ( i > 0 && i > fast ) return false
13+
14+ fast = Math . max ( fast , i + nums [ i ] )
15+
16+ if ( fast >= nums . length - 1 ) return true
17+ }
18+
19+ return false
20+ } ;
Original file line number Diff line number Diff line change 1+ // 시간복잡도: O(log n)
2+ // 공간복잡도: O(1)
3+
4+ /**
5+ * @param {number[] } nums
6+ * @param {number } target
7+ * @return {number }
8+ */
9+ var search = function ( nums , target ) {
10+ let leftIdx = 0 ;
11+ let rightIdx = nums . length - 1 ;
12+
13+ while ( leftIdx <= rightIdx ) {
14+ const midIdx = Math . floor ( ( leftIdx + rightIdx ) / 2 ) ;
15+
16+ if ( nums [ midIdx ] === target ) return midIdx ;
17+
18+ if ( nums [ leftIdx ] <= nums [ midIdx ] ) {
19+ if ( nums [ leftIdx ] <= target && nums [ midIdx ] >= target ) {
20+ rightIdx = midIdx - 1 ;
21+ } else {
22+ leftIdx = midIdx + 1 ;
23+ }
24+ } else {
25+ if ( nums [ rightIdx ] >= target && nums [ midIdx ] <= target ) {
26+ leftIdx = midIdx + 1 ;
27+ } else {
28+ rightIdx = midIdx - 1 ;
29+ }
30+ }
31+ }
32+
33+ return - 1
34+ } ;
You can’t perform that action at this time.
0 commit comments