File tree Expand file tree Collapse file tree 3 files changed +84
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 3 files changed +84
-0
lines changed Original file line number Diff line number Diff line change 1+ // ์๊ฐ๋ณต์ก๋: O(n)
2+ // ๊ณต๊ฐ๋ณต์ก๋: O(n)
3+
4+ /**
5+ * Definition for a binary tree node.
6+ * function TreeNode(val, left, right) {
7+ * this.val = (val===undefined ? 0 : val)
8+ * this.left = (left===undefined ? null : left)
9+ * this.right = (right===undefined ? null : right)
10+ * }
11+ */
12+ /**
13+ * @param {TreeNode } root
14+ * @return {TreeNode }
15+ */
16+ var invertTree = function ( root ) {
17+ if ( ! root ) return null ;
18+
19+ const left = root . left
20+ const right = root . right
21+
22+ root . left = right
23+ root . right = left
24+
25+
26+ invertTree ( left )
27+ invertTree ( right )
28+
29+ return root
30+ } ;
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