Skip to content

Commit 954896f

Browse files
authored
Merge pull request #170 from fartem/insertion-sort-list
2023-01-21 update: added "147. Insertion Sort List"
2 parents f970c8a + 73639e1 commit 954896f

File tree

3 files changed

+61
-0
lines changed

3 files changed

+61
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,7 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
510510
| 142. Linked List Cycle II | [Link](https://leetcode.com/problems/linked-list-cycle-ii/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/LinkedListCycleII.java) |
511511
| 143. Reorder List | [Link](https://leetcode.com/problems/reorder-list/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/ReorderList.java) |
512512
| 146. LRU Cache | [Link](https://leetcode.com/problems/lru-cache/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/LRUCache.java) |
513+
| 147. Insertion Sort List | [Link](https://leetcode.com/problems/insertion-sort-list/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/InsertionSortList.java) |
513514
| 148. Sort List | [Link](https://leetcode.com/problems/sort-list/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/SortList.java) |
514515
| 150. Evaluate Reverse Polish Notation | [Link](https://leetcode.com/problems/evaluate-reverse-polish-notation/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/EvaluateReversePolishNotation.java) |
515516
| 151. Reverse Words in a String | [Link](https://leetcode.com/problems/reverse-words-in-a-string/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/ReverseWordsInAString.java) |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.smlnskgmail.jaman.leetcodejava.medium;
2+
3+
import com.smlnskgmail.jaman.leetcodejava.support.ListNode;
4+
5+
// https://leetcode.com/problems/insertion-sort-list/
6+
public class InsertionSortList {
7+
8+
private final ListNode input;
9+
10+
public InsertionSortList(ListNode input) {
11+
this.input = input;
12+
}
13+
14+
public ListNode solution() {
15+
ListNode result = new ListNode();
16+
ListNode curr = input;
17+
while (curr != null) {
18+
ListNode prev = result;
19+
while (prev.next != null && prev.next.val <= curr.val) {
20+
prev = prev.next;
21+
}
22+
ListNode next = curr.next;
23+
curr.next = prev.next;
24+
prev.next = curr;
25+
curr = next;
26+
}
27+
return result.next;
28+
}
29+
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.smlnskgmail.jaman.leetcodejava.medium;
2+
3+
import com.smlnskgmail.jaman.leetcodejava.support.ListNode;
4+
import org.junit.Test;
5+
6+
import static org.junit.Assert.assertTrue;
7+
8+
public class InsertionSortListTest {
9+
10+
@Test
11+
public void defaultTests() {
12+
assertTrue(
13+
ListNode.areEqual(
14+
ListNode.fromNumbers(1, 2, 3, 4),
15+
new InsertionSortList(
16+
ListNode.fromNumbers(4, 2, 1, 3)
17+
).solution()
18+
)
19+
);
20+
assertTrue(
21+
ListNode.areEqual(
22+
ListNode.fromNumbers(-1, 0, 3, 4, 5),
23+
new InsertionSortList(
24+
ListNode.fromNumbers(-1, 5, 3, 4, 0)
25+
).solution()
26+
)
27+
);
28+
}
29+
30+
}

0 commit comments

Comments
 (0)