File tree Expand file tree Collapse file tree 5 files changed +165
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 5 files changed +165
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number } numCourses
3+ * @param {number[][] } prerequisites
4+ * @return {boolean }
5+ */
6+ var canFinish = function ( numCourses , prerequisites ) {
7+ const preMap = { } ;
8+ for ( let i = 0 ; i < numCourses ; i ++ ) {
9+ preMap [ i ] = [ ] ;
10+ }
11+ for ( const [ crs , pre ] of prerequisites ) {
12+ preMap [ crs ] . push ( pre ) ;
13+ }
14+
15+ const visitSet = new Set ( ) ;
16+
17+ const dfs = ( crs ) => {
18+ if ( visitSet . has ( crs ) ) return false ;
19+ if ( preMap [ crs ] . length === 0 ) return true ;
20+
21+ visitSet . add ( crs ) ;
22+ for ( const pre of preMap [ crs ] ) {
23+ if ( ! dfs ( pre ) ) return false ;
24+ }
25+ visitSet . delete ( crs ) ;
26+ preMap [ crs ] = [ ] ;
27+
28+ return true ;
29+ } ;
30+
31+ for ( let crs = 0 ; crs < numCourses ; crs ++ ) {
32+ if ( ! dfs ( crs ) ) return false ;
33+ }
34+
35+ return true ;
36+ } ;
37+
Original file line number Diff line number Diff line change 1+ /**
2+ * Definition for a binary tree node.
3+ * function TreeNode(val, left, right) {
4+ * this.val = (val === undefined ? 0 : val)
5+ * this.left = (left === undefined ? null : left)
6+ * this.right = (right === undefined ? null : right)
7+ * }
8+ */
9+
10+ /**
11+ * @param {TreeNode } root
12+ * @return {TreeNode }
13+ */
14+ var invertTree = function ( root ) {
15+ if ( ! root ) return null ;
16+
17+ // swap the children
18+ let tmp = root . left ;
19+ root . left = root . right ;
20+ root . right = tmp ;
21+
22+ invertTree ( root . left ) ;
23+ invertTree ( root . right ) ;
24+
25+ return root ;
26+ } ;
27+
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @return {boolean }
4+ */
5+ var canJump = function ( nums ) {
6+ let goal = nums . length - 1 ;
7+
8+ for ( let i = nums . length - 1 ; i >= 0 ; i -- ) {
9+ if ( i + nums [ i ] >= goal ) {
10+ goal = i ;
11+ }
12+ }
13+
14+ return goal === 0 ;
15+ } ;
16+
Original file line number Diff line number Diff line change 1+ /**
2+ * Definition for singly-linked list.
3+ * function ListNode(val, next) {
4+ * this.val = (val===undefined ? 0 : val)
5+ * this.next = (next===undefined ? null : next)
6+ * }
7+ */
8+
9+ /**
10+ * @param {ListNode[] } lists
11+ * @return {ListNode }
12+ */
13+ var mergeKLists = function ( lists ) {
14+ if ( ! lists || lists . length === 0 ) return null ;
15+
16+ const mergeList = ( l1 , l2 ) => {
17+ const dummy = new ListNode ( 0 ) ;
18+ let current = dummy ;
19+
20+ while ( l1 && l2 ) {
21+ if ( l1 . val < l2 . val ) {
22+ current . next = l1 ;
23+ l1 = l1 . next ;
24+ } else {
25+ current . next = l2 ;
26+ l2 = l2 . next ;
27+ }
28+ current = current . next ;
29+ }
30+
31+ current . next = l1 || l2 ;
32+ return dummy . next ;
33+ } ;
34+
35+ while ( lists . length > 1 ) {
36+ const mergedLists = [ ] ;
37+
38+ for ( let i = 0 ; i < lists . length ; i += 2 ) {
39+ const l1 = lists [ i ] ;
40+ const l2 = ( i + 1 < lists . length ) ? lists [ i + 1 ] : null ;
41+ mergedLists . push ( mergeList ( l1 , l2 ) ) ;
42+ }
43+
44+ lists = mergedLists ;
45+ }
46+
47+ return lists [ 0 ] ;
48+ } ;
49+
Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @param {number } target
4+ * @return {number }
5+ */
6+ var search = function ( nums , target ) {
7+ let l = 0 , r = nums . length - 1 ;
8+
9+ while ( l <= r ) {
10+ const mid = Math . floor ( ( l + r ) / 2 ) ;
11+
12+ if ( nums [ mid ] === target ) {
13+ return mid ;
14+ }
15+
16+ // left sorted portion
17+ if ( nums [ l ] <= nums [ mid ] ) {
18+ if ( target > nums [ mid ] || target < nums [ l ] ) {
19+ l = mid + 1 ;
20+ } else {
21+ r = mid - 1 ;
22+ }
23+ }
24+ // right sorted portion
25+ else {
26+ if ( target < nums [ mid ] || target > nums [ r ] ) {
27+ r = mid - 1 ;
28+ } else {
29+ l = mid + 1 ;
30+ }
31+ }
32+ }
33+
34+ return - 1 ;
35+ } ;
36+
You can’t perform that action at this time.
0 commit comments