File tree Expand file tree Collapse file tree 5 files changed +122
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 5 files changed +122
-0
lines changed Original file line number Diff line number Diff line change
1
+ function canFinish ( numCourses : number , prerequisites : number [ ] [ ] ) : boolean {
2
+ const graph : number [ ] [ ] = Array . from ( { length : numCourses } , ( ) => [ ] )
3
+ for ( const [ course , prereq ] of prerequisites ) {
4
+ graph [ course ] . push ( prereq )
5
+ }
6
+ const traversing = new Set < number > ( )
7
+ const finished = new Set < number > ( )
8
+
9
+ const finish = ( crs : number ) : boolean => {
10
+ if ( traversing . has ( crs ) ) return false
11
+ if ( finished . has ( crs ) ) return true
12
+
13
+ traversing . add ( crs )
14
+ for ( const pre of graph [ crs ] ) {
15
+ if ( ! finish ( pre ) ) return false
16
+ }
17
+ traversing . delete ( crs )
18
+ finished . add ( crs )
19
+ return true
20
+ }
21
+ for ( let crs = 0 ; crs < numCourses ; crs ++ ) {
22
+ if ( ! finish ( crs ) ) return false
23
+ }
24
+ return true
25
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * class TreeNode {
4
+ * val: number
5
+ * left: TreeNode | null
6
+ * right: TreeNode | null
7
+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8
+ * this.val = (val===undefined ? 0 : val)
9
+ * this.left = (left===undefined ? null : left)
10
+ * this.right = (right===undefined ? null : right)
11
+ * }
12
+ * }
13
+ */
14
+
15
+ function invertTree ( root : TreeNode | null ) : TreeNode | null {
16
+ if ( root == null ) return null
17
+ const temp = root . left
18
+ root . left = root . right
19
+ root . right = temp
20
+
21
+ invertTree ( root . left )
22
+ invertTree ( root . right )
23
+ return root
24
+ } ;
Original file line number Diff line number Diff line change
1
+ function canJump ( nums : number [ ] ) : boolean {
2
+ const memo : boolean [ ] = new Array ( nums . length ) . fill ( null )
3
+ const dfs = ( start : number ) : boolean => {
4
+ if ( start >= nums . length - 1 ) {
5
+ return true
6
+ }
7
+ if ( memo [ start ] != null ) return memo [ start ]
8
+ const maxJump = nums [ start ]
9
+ for ( let i = 1 ; i <= maxJump ; i ++ ) {
10
+ if ( dfs ( start + i ) ) {
11
+ memo [ start ] = true
12
+ return true
13
+ }
14
+ }
15
+ memo [ start ] = false
16
+ return false
17
+ }
18
+ return dfs ( 0 )
19
+ } ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * class ListNode {
4
+ * val: number
5
+ * next: ListNode | null
6
+ * constructor(val?: number, next?: ListNode | null) {
7
+ * this.val = (val===undefined ? 0 : val)
8
+ * this.next = (next===undefined ? null : next)
9
+ * }
10
+ * }
11
+ */
12
+
13
+ function mergeKLists ( lists : Array < ListNode | null > ) : ListNode | null {
14
+ const tempArray : Array < ListNode > = [ ]
15
+ lists . forEach ( ( node ) => {
16
+ while ( node ) {
17
+ tempArray . push ( node )
18
+ node = node . next
19
+ }
20
+ } )
21
+ tempArray . sort ( ( node1 , node2 ) => node1 . val - node2 . val )
22
+ let result = tempArray [ 0 ] ?? null
23
+ tempArray . forEach ( ( node , index , arr ) => {
24
+ node . next = arr [ index + 1 ] ?? null
25
+ } )
26
+ return result
27
+ } ;
Original file line number Diff line number Diff line change
1
+ function search ( nums : number [ ] , target : number ) : number {
2
+ // return nums.indexOf(target)
3
+ let left = 0
4
+ let right = nums . length - 1
5
+
6
+ while ( left <= right ) {
7
+ const mid = Math . floor ( ( left + right ) / 2 )
8
+ if ( nums [ mid ] === target ) {
9
+ return mid
10
+ }
11
+
12
+ if ( nums [ left ] <= nums [ mid ] ) {
13
+ if ( target >= nums [ left ] && target < nums [ mid ] ) {
14
+ right = mid - 1
15
+ } else {
16
+ left = mid + 1
17
+ }
18
+ } else {
19
+ if ( target > nums [ mid ] && target <= nums [ right ] ) {
20
+ left = mid + 1
21
+ } else {
22
+ right = mid - 1
23
+ }
24
+ }
25
+ }
26
+ return - 1
27
+ } ;
You can’t perform that action at this time.
0 commit comments