Skip to content

Commit 1d94853

Browse files
committed
added deleteMiddle & oddEvenList
1 parent 0aad6d8 commit 1d94853

File tree

3 files changed

+131
-2
lines changed

3 files changed

+131
-2
lines changed

src/linked_list/delete-middle.ts

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { ListNode } from "./linked_list.structure";
2+
import { createLinkedList, linkedListToArray } from "./utilities";
3+
4+
/**
5+
* @problem
6+
* [2095. Delete the Middle Node of a Linked List](https://leetcode.com/problems/delete-the-middle-node-of-a-linked-list)
7+
*/
8+
function deleteMiddle(head: ListNode | null): ListNode | null {
9+
var slow = head;
10+
var fast = head;
11+
var prev = null;
12+
13+
if (!head || !head.next) {
14+
return null;
15+
}
16+
while (fast && fast.next) {
17+
fast = fast.next.next;
18+
prev = slow;
19+
slow = slow.next;
20+
}
21+
22+
prev.next = slow.next;
23+
24+
return head;
25+
};
26+
27+
export function deleteMiddleDBG() {
28+
const tests = [
29+
{
30+
input: createLinkedList([1, 3, 4, 7, 1, 2, 6]),
31+
result: [1, 3, 4, 1, 2, 6]
32+
},
33+
{
34+
input: createLinkedList([1, 2, 3, 4]),
35+
result: [1, 2, 4]
36+
},
37+
{
38+
input: createLinkedList([2, 1]),
39+
result: [2]
40+
},
41+
{
42+
input: createLinkedList([1]),
43+
result: []
44+
},
45+
{
46+
input: createLinkedList([]),
47+
result: []
48+
}
49+
];
50+
51+
tests.forEach((test, index) => {
52+
const output = deleteMiddle(test.input);
53+
const outputArray = linkedListToArray(output);
54+
const success = JSON.stringify(outputArray) === JSON.stringify(test.result);
55+
if (success) {
56+
console.log(`${index} success`);
57+
} else {
58+
console.log(`${index} fail`);
59+
console.log(`expected ${JSON.stringify(test.result)}`);
60+
console.log(`got ${JSON.stringify(outputArray)}`);
61+
}
62+
});
63+
}

src/linked_list/odd-even-list.ts

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import { ListNode } from "./linked_list.structure";
2+
import { createLinkedList, linkedListToArray } from "./utilities";
3+
4+
/**
5+
* @problem
6+
* [328. Odd Even Linked List](https://leetcode.com/problems/odd-even-linked-list)
7+
*/
8+
function oddEvenList(head: ListNode | null): ListNode | null {
9+
if (!head) {
10+
return null;
11+
}
12+
if (!head.next) {
13+
return head;
14+
}
15+
let odd = head;
16+
let even = head.next;
17+
let evenHead = even;
18+
19+
while (even && even.next) {
20+
odd.next = even.next;
21+
odd = odd.next;
22+
even.next = odd.next;
23+
even = even.next;
24+
}
25+
odd.next = evenHead;
26+
return head;
27+
};
28+
29+
export function oddEvenListDBG() {
30+
const tests = [
31+
{
32+
input: createLinkedList([1, 2, 3, 4, 5]),
33+
result: [1, 3, 5, 2, 4]
34+
},
35+
{
36+
input: createLinkedList([2, 1, 3, 5, 6, 4, 7]),
37+
result: [2, 3, 6, 7, 1, 5, 4]
38+
},
39+
{
40+
input: createLinkedList([]),
41+
result: []
42+
},
43+
{
44+
input: createLinkedList([1]),
45+
result: [1]
46+
},
47+
{
48+
input: createLinkedList([1, 2]),
49+
result: [1, 2]
50+
}
51+
];
52+
53+
tests.forEach((test, index) => {
54+
const oddEven = oddEvenList(test.input);
55+
const resultArray = linkedListToArray(oddEven);
56+
const success = JSON.stringify(resultArray) === JSON.stringify(test.result);
57+
if (success) {
58+
console.log(`${index} success`);
59+
} else {
60+
console.log(`${index} fail`);
61+
console.log(`expected ${JSON.stringify(test.result)}`);
62+
console.log(`got ${JSON.stringify(resultArray)}`);
63+
}
64+
});
65+
}

src/main.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
import { dota2SenateDBG } from "./queue/predict-party-victory";
1+
import { deleteMiddleDBG } from "./linked_list/delete-middle";
2+
import { oddEvenListDBG } from "./linked_list/odd-even-list";
23

3-
dota2SenateDBG()
4+
oddEvenListDBG()

0 commit comments

Comments
 (0)