Skip to content

Commit acea417

Browse files
committed
ts-3: addressed review comments (imports, naming, ditch extra types)
1 parent e7072d0 commit acea417

7 files changed

+71
-68
lines changed

typescript/Linked Lists/flatten_multi_level_list.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
1-
/* Definition of MultiLevelListNode:
2-
class MultieLevelListNode {
3-
val: number; next: MLLNode; child: MLLNode;
1+
import { MultiLevelListNode } from "./ds";
2+
3+
/* Definition of MultiLevelListNode:
4+
class MultiLevelListNode {
5+
val: number;
6+
next: MultiLevelListNode | null;
7+
child: MultiLevelListNode | null;
48
constructor(val: number){
59
this.val = val;
610
this.next = null;
711
this.child = null;
812
}
9-
}
10-
type MLLNode = MultieLevelListNode | null;
11-
*/
13+
}*/
14+
1215

13-
function flattenMultiLevelList(head: MLLNode): MLLNode {
16+
function flattenMultiLevelList(head: MultiLevelListNode | null): MultiLevelListNode | null {
1417
if (!head)
1518
return head;
16-
let tail: MLLNode = head;
19+
let tail: MultiLevelListNode | null = head;
1720
// Find the tail of the linked list at the first level.
1821
while (tail.next !== null)
1922
tail = tail.next;
20-
let curr: MLLNode = head;
23+
let curr: MultiLevelListNode | null = head;
2124
// Process each node at the current level. If a node has a child linked list,
2225
// append it to the tail and then update the tail to the end of the extended
2326
// linked list. Continue until all nodes at the current level are processed.
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1+
import { ListNode } from './ds';
2+
13
/* Definition of ListNode:
24
class ListNode {
3-
val: number;
4-
next: LLNode;
5-
constructor(val: number, next: LLNode = null){
5+
val: number; next: ListNode | null;
6+
constructor(val: number){
67
this.val = val;
7-
this.next = next;
8+
this.next = null;
89
}
9-
}
10-
type LLNode = ListNode | null;
11-
*/
10+
}*/
11+
1212

13-
function linkedListIntersection(head_A: LLNode, head_B: LLNode): LLNode {
14-
let ptr_A = head_A, ptr_B = head_B;
15-
// Traverse through list A with 'ptr_A' and list B with 'ptr_B'
13+
function linkedListIntersection(headA: ListNode | null, headB: ListNode | null): ListNode | null {
14+
let ptrA = headA, ptrB = headB;
15+
// Traverse through list A with 'ptrA' and list B with 'ptrB'
1616
// until they meet.
17-
while (ptr_A !== ptr_B) {
18-
// Traverse list A -> list B by first traversing 'ptr_A' and
17+
while (ptrA !== ptrB) {
18+
// Traverse list A -> list B by first traversing 'ptrA' and
1919
// then, upon reaching the end of list A, continue the
2020
// traversal from the head of list B.
21-
ptr_A = ptr_A !== null ? ptr_A.next : head_B;
21+
ptrA = ptrA !== null ? ptrA.next : headB;
2222
// Simultaneously, traverse list B -> list A.
23-
ptr_B = ptr_B !== null ? ptr_B.next : head_A;
23+
ptrB = ptrB !== null ? ptrB.next : headA;
2424
}
25-
// At this point, 'ptr_A' and 'ptr_B' either point to the
25+
// At this point, 'ptrA' and 'ptrB' either point to the
2626
// intersection node or both are null if the lists do not
2727
// intersect. Return either pointer.
28-
return ptr_A;
28+
return ptrA;
2929
}

typescript/Linked Lists/linked_list_reversal.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1+
import { ListNode } from './ds';
2+
13
/* Definition of ListNode:
24
class ListNode {
3-
val: number;
4-
next: LLNode;
5-
constructor(val: number, next: LLNode = null){
5+
val: number; next: ListNode | null;
6+
constructor(val: number){
67
this.val = val;
7-
this.next = next;
8+
this.next = null;
89
}
9-
}
10-
type LLNode = ListNode | null;
11-
*/
10+
}*/
1211

13-
function linkedListReversal(head: LLNode): LLNode {
14-
let currNode: LLNode = head;
15-
let prevNode: LLNode = null;
12+
function linkedListReversal(head: ListNode | null): ListNode | null {
13+
let currNode: ListNode | null = head;
14+
let prevNode: ListNode | null = null;
1615
// Reverse the direction of each node's pointer until 'currNode'
1716
// is null.
1817
while (currNode !== null){
19-
const nextNode: LLNode = currNode.next;
18+
const nextNode: ListNode | null = currNode.next;
2019
currNode.next = prevNode;
2120
prevNode = currNode;
2221
currNode = nextNode;

typescript/Linked Lists/linked_list_reversal_recursive.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
1+
import { ListNode } from './ds';
2+
13
/* Definition of ListNode:
24
class ListNode {
3-
val: number;
4-
next: LLNode;
5-
constructor(val: number, next: LLNode = null){
5+
val: number; next: ListNode | null;
6+
constructor(val: number){
67
this.val = val;
7-
this.next = next;
8+
this.next = null;
89
}
9-
}
10-
type LLNode = ListNode | null;
11-
*/
10+
}*/
1211

13-
function linkedListReversalRecursive(head: LLNode): LLNode {
12+
function linkedListReversalRecursive(head: ListNode | null): ListNode | null {
1413
// Base cases.
1514
if (!head || !head.next)
1615
return head;
1716
// Recursively reverse the sublist starting from the next node.
18-
const newHead: LLNode = linkedListReversalRecursive(head.next);
17+
const newHead: ListNode | null = linkedListReversalRecursive(head.next);
1918
// Connect the reversed linked list to the head node to fully
2019
// reverse the entire linked list.
2120
head.next.next = head;

typescript/Linked Lists/lru_cache.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { DoublyLinkedListNode } from './ds';
2+
3+
/* Definition of DoublyLinkedListNode:
14
class DoublyLinkedListNode {
25
key: number; val: number;
36
prev: DoublyLinkedListNode | null;
@@ -9,7 +12,7 @@ class DoublyLinkedListNode {
912
this.prev = null;
1013
this.next = null;
1114
}
12-
}
15+
}*/
1316

1417
class LRUCache {
1518
capacity: number;

typescript/Linked Lists/palindromic_linked_list.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
/* Definition of ListNode:
1+
import { ListNode } from './ds';
2+
3+
/* Definition of ListNode:
24
class ListNode {
3-
val: number;
4-
next: LLNode;
5+
val: number; next: ListNode | null;
56
constructor(val: number){
67
this.val = val;
78
this.next = null;
89
}
9-
}
10-
type LLNode = ListNode | null;
11-
*/
10+
}*/
1211

13-
function palindromicLinkedList(head: LLNode): boolean {
12+
function palindromicLinkedList(head: ListNode | null): boolean {
1413
// Find the middle of the linked list and then reverse the second half of the
1514
// linked list starting at this midpoint.
1615
const mid = findMiddle(head);
@@ -28,9 +27,9 @@ function palindromicLinkedList(head: LLNode): boolean {
2827
}
2928

3029
// From the 'Reverse Linked List' problem.
31-
function reverseList(head: LLNode): LLNode {
32-
let prevNode: LLNode = null;
33-
let currNode: LLNode = head;
30+
function reverseList(head: ListNode | null): ListNode | null {
31+
let prevNode: ListNode | null = null;
32+
let currNode: ListNode | null = head;
3433
while (currNode) {
3534
const nextNode = currNode.next;
3635
currNode.next = prevNode;
@@ -41,9 +40,9 @@ function reverseList(head: LLNode): LLNode {
4140
}
4241

4342
// From the 'Linked List Midpoint' problem.
44-
function findMiddle(head: LLNode): LLNode {
45-
let slow: LLNode = head;
46-
let fast: LLNode = head;
43+
function findMiddle(head: ListNode | null): ListNode | null {
44+
let slow: ListNode | null = head;
45+
let fast: ListNode | null = head;
4746
while (fast && fast.next) {
4847
slow = slow!.next;
4948
fast = fast.next!.next;

typescript/Linked Lists/remove_kth_last_node.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
/* Definition of ListNode:
1+
import { ListNode } from './ds';
2+
3+
/* Definition of ListNode:
24
class ListNode {
3-
val: number;
4-
next: LLNode;
5+
val: number; next: ListNode | null;
56
constructor(val: number){
67
this.val = val;
78
this.next = null;
89
}
9-
}
10-
type LLNode = ListNode | null;
11-
*/
10+
}*/
1211

13-
function removeKthLastNode(head: LLNode, k: number): LLNode {
12+
function removeKthLastNode(head: ListNode | null, k: number): ListNode | null {
1413
// A dummy node to ensure there's a node before 'head' in case we
1514
// need to remove the head node.
16-
let dummy: LLNode = new ListNode(-1);
15+
let dummy: ListNode | null = new ListNode(-1);
1716
dummy.next = head;
18-
let trailer: LLNode = dummy, leader: LLNode = dummy;
17+
let trailer: ListNode | null = dummy;
18+
let leader: ListNode | null = dummy;
1919
// Advance 'leader' k steps ahead.
2020
for (let i = 0; i < k; i++){
2121
leader = leader.next;

0 commit comments

Comments
 (0)