File tree Expand file tree Collapse file tree 5 files changed +136
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 5 files changed +136
-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+ const inDegree : number [ ] = Array ( numCourses ) . fill ( 0 ) ;
4+
5+ for ( const [ course , prerequisite ] of prerequisites ) {
6+ graph [ prerequisite ] . push ( course ) ;
7+ inDegree [ course ] ++ ;
8+ }
9+
10+ // 지금 당장 수강할 수 있는 과목 목록
11+ const queue : number [ ] = [ ] ;
12+
13+ for ( let i = 0 ; i < numCourses ; i ++ ) {
14+ if ( inDegree [ i ] === 0 ) {
15+ queue . push ( i ) ;
16+ }
17+ }
18+
19+ const result : number [ ] = [ ] ;
20+ while ( queue . length > 0 ) {
21+ const course = queue . shift ( ) ! ;
22+ result . push ( course ) ;
23+
24+ for ( const nextCourse of graph [ course ] ) {
25+ inDegree [ nextCourse ] -- ;
26+ if ( inDegree [ nextCourse ] === 0 ) {
27+ queue . push ( nextCourse ) ;
28+ }
29+ }
30+ }
31+
32+ if ( result . length !== numCourses ) return false ;
33+ return true ;
34+ }
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 ) return null ;
17+
18+ const temp = root . left ;
19+ root . left = root . right ;
20+ root . right = temp ;
21+
22+ invertTree ( root . left ) ;
23+ invertTree ( root . right ) ;
24+
25+ return root ;
26+ }
Original file line number Diff line number Diff line change 1+ function canJump ( nums : number [ ] ) : boolean {
2+ const n = nums . length ;
3+
4+ let maximumReach = 0 ;
5+
6+ for ( let i = 0 ; i < n ; i ++ ) {
7+ if ( i > maximumReach ) return false ;
8+
9+ maximumReach = Math . max ( maximumReach , i + nums [ i ] ) ;
10+ }
11+
12+ return maximumReach >= n - 1 ;
13+ }
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+ if ( ! lists || lists . length === 0 ) return null ;
15+
16+ const minHeap = new PriorityQueue ( ( a : ListNode , b : ListNode ) => a . val - b . val ) ;
17+
18+ for ( const node of lists ) {
19+ if ( node ) minHeap . enqueue ( node ) ;
20+ }
21+
22+ const dummyHead = new ListNode ( ) ;
23+ let current = dummyHead ;
24+
25+ while ( ! minHeap . isEmpty ( ) ) {
26+ const minimumElement = minHeap . dequeue ( ) ;
27+
28+ current . next = minimumElement ;
29+ current = current . next ;
30+
31+ if ( minimumElement . next ) {
32+ minHeap . enqueue ( minimumElement . next ) ;
33+ }
34+ }
35+
36+ return dummyHead . next ;
37+ }
Original file line number Diff line number Diff line change 1+ function search ( nums : number [ ] , target : number ) : number {
2+ let left = 0 ;
3+ let right = nums . length - 1 ;
4+
5+ while ( left <= right ) {
6+ const mid = Math . floor ( ( left + right ) / 2 ) ;
7+
8+ if ( nums [ mid ] === target ) return mid ;
9+
10+ if ( nums [ mid ] >= nums [ left ] ) {
11+ if ( target < nums [ mid ] && target >= nums [ left ] ) {
12+ right = mid - 1 ;
13+ } else {
14+ left = mid + 1 ;
15+ }
16+ } else {
17+ if ( target > nums [ mid ] && target <= nums [ right ] ) {
18+ left = mid + 1 ;
19+ } else {
20+ right = mid - 1 ;
21+ }
22+ }
23+ }
24+
25+ return - 1 ;
26+ }
You can’t perform that action at this time.
0 commit comments