From bd255dcb3bdee5be3d5921437ebb343efe94af98 Mon Sep 17 00:00:00 2001 From: dksifoua Date: Sun, 1 Sep 2024 00:32:59 -0400 Subject: [PATCH] Make ListNode Reusable --- .../leetcode/addtwonumbers/Solution.java | 16 +--- .../leetcode/linkedlistcycle/Solution.java | 12 +-- .../mergetwosortedlists/Solution.java | 32 +++----- .../removenthnodefromendoflist/Solution.java | 9 +-- .../leetcode/reorderlist/Solution.java | 30 +------- .../leetcode/reverselinkedlist/Solution.java | 14 +--- .../io/dksifoua/leetcode/utils/ListNode.java | 59 +++++++++++++++ .../leetcode/addtwonumbers/SolutionTest.java | 32 ++++---- .../linkedlistcycle/SolutionTest.java | 2 +- .../mergetwosortedlists/SolutionTest.java | 73 ++++++++++--------- .../SolutionTest.java | 12 +-- .../leetcode/reorderlist/SolutionTest.java | 65 +++++++++-------- .../reverselinkedlist/SolutionTest.java | 37 +++++----- 13 files changed, 188 insertions(+), 205 deletions(-) create mode 100644 src/main/java/io/dksifoua/leetcode/utils/ListNode.java diff --git a/src/main/java/io/dksifoua/leetcode/addtwonumbers/Solution.java b/src/main/java/io/dksifoua/leetcode/addtwonumbers/Solution.java index f06b85f..8fdb359 100644 --- a/src/main/java/io/dksifoua/leetcode/addtwonumbers/Solution.java +++ b/src/main/java/io/dksifoua/leetcode/addtwonumbers/Solution.java @@ -1,8 +1,6 @@ package io.dksifoua.leetcode.addtwonumbers; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; +import io.dksifoua.leetcode.utils.ListNode; public class Solution { @@ -16,11 +14,11 @@ public ListNode addTwoNumbers(ListNode l1, ListNode l2) { while (l1 != null || l2 != null) { int sum = retention; if (l1 != null) { - sum += l1.getVal(); + sum += l1.getValue(); l1 = l1.getNext(); } if (l2 != null) { - sum += l2.getVal(); + sum += l2.getValue(); l2 = l2.getNext(); } retention = sum / 10; @@ -34,12 +32,4 @@ public ListNode addTwoNumbers(ListNode l1, ListNode l2) { return result.getNext(); } - - @AllArgsConstructor - @Getter - @Setter - public static final class ListNode { - private int val; - private ListNode next; - } } diff --git a/src/main/java/io/dksifoua/leetcode/linkedlistcycle/Solution.java b/src/main/java/io/dksifoua/leetcode/linkedlistcycle/Solution.java index 796c956..2020908 100644 --- a/src/main/java/io/dksifoua/leetcode/linkedlistcycle/Solution.java +++ b/src/main/java/io/dksifoua/leetcode/linkedlistcycle/Solution.java @@ -1,8 +1,6 @@ package io.dksifoua.leetcode.linkedlistcycle; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; +import io.dksifoua.leetcode.utils.ListNode; public class Solution { @@ -18,12 +16,4 @@ public boolean hasCycle(ListNode head) { return false; } - - @AllArgsConstructor - @Getter - @Setter - public static final class ListNode { - private int val; - private ListNode next; - } } diff --git a/src/main/java/io/dksifoua/leetcode/mergetwosortedlists/Solution.java b/src/main/java/io/dksifoua/leetcode/mergetwosortedlists/Solution.java index 74e371e..da7614d 100644 --- a/src/main/java/io/dksifoua/leetcode/mergetwosortedlists/Solution.java +++ b/src/main/java/io/dksifoua/leetcode/mergetwosortedlists/Solution.java @@ -1,8 +1,6 @@ package io.dksifoua.leetcode.mergetwosortedlists; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; +import io.dksifoua.leetcode.utils.ListNode; public class Solution { @@ -12,17 +10,17 @@ public ListNode mergeTwoLists(ListNode list1, ListNode list2) { while (current1 != null || current2 != null) { int val; if (current1 != null && current2 != null) { - val = Math.min(current1.getVal(), current2.getVal()); - if (current1.getVal() <= current2.getVal()) { + val = Math.min(current1.getValue(), current2.getValue()); + if (current1.getValue() <= current2.getValue()) { current1 = current1.getNext(); } else { current2 = current2.getNext(); } } else if (current1 == null) { - val = current2.getVal(); + val = current2.getValue(); current2 = current2.getNext(); } else { - val = current1.getVal(); + val = current1.getValue(); current1 = current1.getNext(); } @@ -44,11 +42,11 @@ public ListNode mergeTwoListsOptimal(ListNode list1, ListNode list2) { ListNode mergedList = new ListNode(0, null), current = mergedList; while (list1 != null && list2 != null) { - if (list1.getVal() <= list2.getVal()) { - current.setNext(new ListNode(list1.getVal(), null)); + if (list1.getValue() <= list2.getValue()) { + current.setNext(new ListNode(list1.getValue(), null)); list1 = list1.getNext(); } else { - current.setNext(new ListNode(list2.getVal(), null)); + current.setNext(new ListNode(list2.getValue(), null)); list2 = list2.getNext(); } @@ -66,19 +64,11 @@ public ListNode mergeTwoListsRecursive(ListNode list1, ListNode list2) { if (list2 == null) return list1; ListNode mergedList = new ListNode(0, null); - if (list1.getVal() < list2.getVal()) { - mergedList.setNext(new ListNode(list1.getVal(), this.mergeTwoListsRecursive(list1.getNext(), list2))); + if (list1.getValue() < list2.getValue()) { + mergedList.setNext(new ListNode(list1.getValue(), this.mergeTwoListsRecursive(list1.getNext(), list2))); } else { - mergedList.setNext(new ListNode(list2.getVal(), this.mergeTwoListsRecursive(list1, list2.getNext()))); + mergedList.setNext(new ListNode(list2.getValue(), this.mergeTwoListsRecursive(list1, list2.getNext()))); } return mergedList.getNext(); } - - @AllArgsConstructor - @Getter - @Setter - public static class ListNode { - private int val; - private ListNode next; - } } diff --git a/src/main/java/io/dksifoua/leetcode/removenthnodefromendoflist/Solution.java b/src/main/java/io/dksifoua/leetcode/removenthnodefromendoflist/Solution.java index 3a0484c..1d9303a 100644 --- a/src/main/java/io/dksifoua/leetcode/removenthnodefromendoflist/Solution.java +++ b/src/main/java/io/dksifoua/leetcode/removenthnodefromendoflist/Solution.java @@ -1,5 +1,6 @@ package io.dksifoua.leetcode.removenthnodefromendoflist; +import io.dksifoua.leetcode.utils.ListNode; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @@ -27,12 +28,4 @@ public ListNode removeNthFromEnd(ListNode head, int n) { return head; } - - @AllArgsConstructor - @Getter - @Setter - public static final class ListNode { - private int val; - private ListNode next; - } } diff --git a/src/main/java/io/dksifoua/leetcode/reorderlist/Solution.java b/src/main/java/io/dksifoua/leetcode/reorderlist/Solution.java index 8e1e410..8b5f9ec 100644 --- a/src/main/java/io/dksifoua/leetcode/reorderlist/Solution.java +++ b/src/main/java/io/dksifoua/leetcode/reorderlist/Solution.java @@ -1,8 +1,6 @@ package io.dksifoua.leetcode.reorderlist; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; +import io.dksifoua.leetcode.utils.ListNode; public class Solution { @@ -70,30 +68,4 @@ public void reorderList(ListNode head) { this.merge(head, middle); System.out.println("Reordered: " + head); } - - @AllArgsConstructor - @Getter - @Setter - public static class ListNode { - private int val; - private ListNode next; - - @Override - public String toString() { - StringBuilder result = new StringBuilder(); - - ListNode current = this; - while (current != null) { - result.append(current.getVal()); - if (current.getNext() != null) { - result.append(" -> "); - } else { - result.append(" -> null"); - } - current = current.getNext(); - } - - return result.toString(); - } - } } diff --git a/src/main/java/io/dksifoua/leetcode/reverselinkedlist/Solution.java b/src/main/java/io/dksifoua/leetcode/reverselinkedlist/Solution.java index 8fb0489..c88cc51 100644 --- a/src/main/java/io/dksifoua/leetcode/reverselinkedlist/Solution.java +++ b/src/main/java/io/dksifoua/leetcode/reverselinkedlist/Solution.java @@ -1,8 +1,6 @@ package io.dksifoua.leetcode.reverselinkedlist; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; +import io.dksifoua.leetcode.utils.ListNode; public class Solution { @@ -10,7 +8,7 @@ public class Solution { public ListNode reverseList(ListNode head) { ListNode reversedHead = null, current = head; while (current != null) { - reversedHead = new ListNode(current.getVal(), reversedHead); + reversedHead = new ListNode(current.getValue(), reversedHead); current = current.getNext(); } @@ -30,12 +28,4 @@ public ListNode reverseListOptimal(ListNode head) { } return head; } - - @AllArgsConstructor - @Getter - @Setter - static class ListNode { - private int val; - private ListNode next; - } } diff --git a/src/main/java/io/dksifoua/leetcode/utils/ListNode.java b/src/main/java/io/dksifoua/leetcode/utils/ListNode.java new file mode 100644 index 0000000..7af2322 --- /dev/null +++ b/src/main/java/io/dksifoua/leetcode/utils/ListNode.java @@ -0,0 +1,59 @@ +package io.dksifoua.leetcode.utils; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; + +@AllArgsConstructor +@Getter +@Setter +public class ListNode { + private int value; + private ListNode next; + + public static ListNode build(int[] array) { + ListNode dummy = new ListNode(0, null); + + ListNode current = dummy; + for (int element : array) { + ListNode node = new ListNode(element, null); + current.setNext(node); + + current = current.getNext(); + } + + return dummy.getNext(); + } + + public int[] toArray() { + List list = new ArrayList<>(); + ListNode current = this; + while (current != null) { + list.add(current.getValue()); + current = current.getNext(); + } + + return list.stream().mapToInt(Integer::intValue).toArray(); + } + + @Override + public String toString() { + StringBuilder result = new StringBuilder(); + + ListNode current = this; + while (current != null) { + result.append(current.getValue()); + if (current.getNext() != null) { + result.append(" -> "); + } else { + result.append(" -> null"); + } + current = current.getNext(); + } + + return result.toString(); + } +} diff --git a/src/test/java/io/dksifoua/leetcode/addtwonumbers/SolutionTest.java b/src/test/java/io/dksifoua/leetcode/addtwonumbers/SolutionTest.java index 0662273..cd3250f 100644 --- a/src/test/java/io/dksifoua/leetcode/addtwonumbers/SolutionTest.java +++ b/src/test/java/io/dksifoua/leetcode/addtwonumbers/SolutionTest.java @@ -1,6 +1,6 @@ package io.dksifoua.leetcode.addtwonumbers; -import io.dksifoua.leetcode.addtwonumbers.Solution.ListNode; +import io.dksifoua.leetcode.utils.ListNode; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -17,9 +17,9 @@ void test1() { new ListNode(6, new ListNode(4, null))); ListNode result = solution.addTwoNumbers(list1, list2); - Assertions.assertEquals(7, result.getVal()); - Assertions.assertEquals(0, result.getNext().getVal()); - Assertions.assertEquals(8, result.getNext().getNext().getVal()); + Assertions.assertEquals(7, result.getValue()); + Assertions.assertEquals(0, result.getNext().getValue()); + Assertions.assertEquals(8, result.getNext().getNext().getValue()); Assertions.assertNull(result.getNext().getNext().getNext()); } @@ -28,7 +28,7 @@ void test2() { ListNode list1 = new ListNode(0, null); ListNode list2 = new ListNode(0, null); ListNode result = solution.addTwoNumbers(list1, list2); - Assertions.assertEquals(0, result.getVal()); + Assertions.assertEquals(0, result.getValue()); Assertions.assertNull(result.getNext()); } @@ -46,14 +46,14 @@ void test3() { new ListNode(9, new ListNode(9, null)))); ListNode result = solution.addTwoNumbers(list1, list2); - Assertions.assertEquals(8, result.getVal()); - Assertions.assertEquals(9, result.getNext().getVal()); - Assertions.assertEquals(9, result.getNext().getNext().getVal()); - Assertions.assertEquals(9, result.getNext().getNext().getNext().getVal()); - Assertions.assertEquals(0, result.getNext().getNext().getNext().getNext().getVal()); - Assertions.assertEquals(0, result.getNext().getNext().getNext().getNext().getNext().getVal()); - Assertions.assertEquals(0, result.getNext().getNext().getNext().getNext().getNext().getNext().getVal()); - Assertions.assertEquals(1, result.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getVal()); + Assertions.assertEquals(8, result.getValue()); + Assertions.assertEquals(9, result.getNext().getValue()); + Assertions.assertEquals(9, result.getNext().getNext().getValue()); + Assertions.assertEquals(9, result.getNext().getNext().getNext().getValue()); + Assertions.assertEquals(0, result.getNext().getNext().getNext().getNext().getValue()); + Assertions.assertEquals(0, result.getNext().getNext().getNext().getNext().getNext().getValue()); + Assertions.assertEquals(0, result.getNext().getNext().getNext().getNext().getNext().getNext().getValue()); + Assertions.assertEquals(1, result.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getValue()); Assertions.assertNull(result.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext()); } @@ -66,9 +66,9 @@ void test4() { new ListNode(6, new ListNode(4, null))); ListNode result = solution.addTwoNumbers(list1, list2); - Assertions.assertEquals(7, result.getVal()); - Assertions.assertEquals(0, result.getNext().getVal()); - Assertions.assertEquals(8, result.getNext().getNext().getVal()); + Assertions.assertEquals(7, result.getValue()); + Assertions.assertEquals(0, result.getNext().getValue()); + Assertions.assertEquals(8, result.getNext().getNext().getValue()); Assertions.assertNull(result.getNext().getNext().getNext()); } } diff --git a/src/test/java/io/dksifoua/leetcode/linkedlistcycle/SolutionTest.java b/src/test/java/io/dksifoua/leetcode/linkedlistcycle/SolutionTest.java index 992e27d..1cf114c 100644 --- a/src/test/java/io/dksifoua/leetcode/linkedlistcycle/SolutionTest.java +++ b/src/test/java/io/dksifoua/leetcode/linkedlistcycle/SolutionTest.java @@ -1,6 +1,6 @@ package io.dksifoua.leetcode.linkedlistcycle; -import io.dksifoua.leetcode.linkedlistcycle.Solution.ListNode; +import io.dksifoua.leetcode.utils.ListNode; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/src/test/java/io/dksifoua/leetcode/mergetwosortedlists/SolutionTest.java b/src/test/java/io/dksifoua/leetcode/mergetwosortedlists/SolutionTest.java index c184097..76827ba 100644 --- a/src/test/java/io/dksifoua/leetcode/mergetwosortedlists/SolutionTest.java +++ b/src/test/java/io/dksifoua/leetcode/mergetwosortedlists/SolutionTest.java @@ -1,5 +1,6 @@ package io.dksifoua.leetcode.mergetwosortedlists; +import io.dksifoua.leetcode.utils.ListNode; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -11,88 +12,88 @@ public class SolutionTest { @Test void test1() { - Solution.ListNode list1 = new Solution.ListNode(1, - new Solution.ListNode(2, - new Solution.ListNode(4, null))); - Solution.ListNode list2 = new Solution.ListNode(1, - new Solution.ListNode(3, - new Solution.ListNode(4, null))); - - Solution.ListNode currentMerged = solution.mergeTwoLists(list1, list2); + ListNode list1 = new ListNode(1, + new ListNode(2, + new ListNode(4, null))); + ListNode list2 = new ListNode(1, + new ListNode(3, + new ListNode(4, null))); + + ListNode currentMerged = solution.mergeTwoLists(list1, list2); for (int val : List.of(1, 1, 2, 3, 4, 4)) { - Assertions.assertEquals(currentMerged.getVal(), val); + Assertions.assertEquals(currentMerged.getValue(), val); currentMerged = currentMerged.getNext(); } } @Test void testOptimal1() { - Solution.ListNode list1 = new Solution.ListNode(1, - new Solution.ListNode(2, - new Solution.ListNode(4, null))); - Solution.ListNode list2 = new Solution.ListNode(1, - new Solution.ListNode(3, - new Solution.ListNode(4, null))); - - Solution.ListNode currentMerged = solution.mergeTwoListsOptimal(list1, list2); + ListNode list1 = new ListNode(1, + new ListNode(2, + new ListNode(4, null))); + ListNode list2 = new ListNode(1, + new ListNode(3, + new ListNode(4, null))); + + ListNode currentMerged = solution.mergeTwoListsOptimal(list1, list2); for (int val : List.of(1, 1, 2, 3, 4, 4)) { - Assertions.assertEquals(currentMerged.getVal(), val); + Assertions.assertEquals(currentMerged.getValue(), val); currentMerged = currentMerged.getNext(); } } @Test void testRecursive1() { - Solution.ListNode list1 = new Solution.ListNode(1, - new Solution.ListNode(2, - new Solution.ListNode(4, null))); - Solution.ListNode list2 = new Solution.ListNode(1, - new Solution.ListNode(3, - new Solution.ListNode(4, null))); - - Solution.ListNode currentMerged = solution.mergeTwoListsRecursive(list1, list2); + ListNode list1 = new ListNode(1, + new ListNode(2, + new ListNode(4, null))); + ListNode list2 = new ListNode(1, + new ListNode(3, + new ListNode(4, null))); + + ListNode currentMerged = solution.mergeTwoListsRecursive(list1, list2); for (int val : List.of(1, 1, 2, 3, 4, 4)) { - Assertions.assertEquals(currentMerged.getVal(), val); + Assertions.assertEquals(currentMerged.getValue(), val); currentMerged = currentMerged.getNext(); } } @Test void test2() { - Solution.ListNode mergedList = solution.mergeTwoLists(null, null); + ListNode mergedList = solution.mergeTwoLists(null, null); Assertions.assertNull(mergedList); } @Test void test2Optimal() { - Solution.ListNode mergedList = solution.mergeTwoListsOptimal(null, null); + ListNode mergedList = solution.mergeTwoListsOptimal(null, null); Assertions.assertNull(mergedList); } @Test void test2Recursive() { - Solution.ListNode mergedList = solution.mergeTwoListsRecursive(null, null); + ListNode mergedList = solution.mergeTwoListsRecursive(null, null); Assertions.assertNull(mergedList); } @Test void test3() { - Solution.ListNode currentMerged = solution.mergeTwoLists(null, new Solution.ListNode(0, null)); - Assertions.assertEquals(0, currentMerged.getVal()); + ListNode currentMerged = solution.mergeTwoLists(null, new ListNode(0, null)); + Assertions.assertEquals(0, currentMerged.getValue()); Assertions.assertNull(currentMerged.getNext()); } @Test void test3Optimal() { - Solution.ListNode currentMerged = solution.mergeTwoListsOptimal(null, new Solution.ListNode(0, null)); - Assertions.assertEquals(0, currentMerged.getVal()); + ListNode currentMerged = solution.mergeTwoListsOptimal(null, new ListNode(0, null)); + Assertions.assertEquals(0, currentMerged.getValue()); Assertions.assertNull(currentMerged.getNext()); } @Test void test3Recursive() { - Solution.ListNode currentMerged = solution.mergeTwoListsRecursive(null, new Solution.ListNode(0, null)); - Assertions.assertEquals(0, currentMerged.getVal()); + ListNode currentMerged = solution.mergeTwoListsRecursive(null, new ListNode(0, null)); + Assertions.assertEquals(0, currentMerged.getValue()); Assertions.assertNull(currentMerged.getNext()); } } diff --git a/src/test/java/io/dksifoua/leetcode/removenthnodefromendoflist/SolutionTest.java b/src/test/java/io/dksifoua/leetcode/removenthnodefromendoflist/SolutionTest.java index 3540f65..3430d7a 100644 --- a/src/test/java/io/dksifoua/leetcode/removenthnodefromendoflist/SolutionTest.java +++ b/src/test/java/io/dksifoua/leetcode/removenthnodefromendoflist/SolutionTest.java @@ -1,6 +1,6 @@ package io.dksifoua.leetcode.removenthnodefromendoflist; -import io.dksifoua.leetcode.removenthnodefromendoflist.Solution.ListNode; +import io.dksifoua.leetcode.utils.ListNode; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -16,10 +16,10 @@ void test1() { new ListNode(4, new ListNode(5, null))))); ListNode result = solution.removeNthFromEnd(head, 2); - Assertions.assertEquals(1, result.getVal()); - Assertions.assertEquals(2, result.getNext().getVal()); - Assertions.assertEquals(3, result.getNext().getNext().getVal()); - Assertions.assertEquals(5, result.getNext().getNext().getNext().getVal()); + Assertions.assertEquals(1, result.getValue()); + Assertions.assertEquals(2, result.getNext().getValue()); + Assertions.assertEquals(3, result.getNext().getNext().getValue()); + Assertions.assertEquals(5, result.getNext().getNext().getNext().getValue()); Assertions.assertNull(result.getNext().getNext().getNext().getNext()); } @@ -35,7 +35,7 @@ void test3() { ListNode head = new ListNode(1, new ListNode(2, null)); ListNode result = solution.removeNthFromEnd(head, 1); - Assertions.assertEquals(1, result.getVal()); + Assertions.assertEquals(1, result.getValue()); Assertions.assertNull(result.getNext()); } } diff --git a/src/test/java/io/dksifoua/leetcode/reorderlist/SolutionTest.java b/src/test/java/io/dksifoua/leetcode/reorderlist/SolutionTest.java index adf83c3..65bee15 100644 --- a/src/test/java/io/dksifoua/leetcode/reorderlist/SolutionTest.java +++ b/src/test/java/io/dksifoua/leetcode/reorderlist/SolutionTest.java @@ -1,10 +1,11 @@ package io.dksifoua.leetcode.reorderlist; -import io.dksifoua.leetcode.reorderlist.Solution.ListNode; +import io.dksifoua.leetcode.utils.ListNode; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; public class SolutionTest { @@ -21,8 +22,8 @@ void test1() { void test2() { ListNode head = new ListNode(1, null); solution.reorderList(head); - assertEquals(1, head.getVal()); - assertEquals(null, head.getNext()); + assertEquals(1, head.getValue()); + assertNull(head.getNext()); } @Test @@ -30,9 +31,9 @@ void test3() { ListNode head = new ListNode(1, new ListNode(2, null)); solution.reorderList(head); - assertEquals(1, head.getVal()); - assertEquals(2, head.getNext().getVal()); - assertEquals(null, head.getNext().getNext()); + assertEquals(1, head.getValue()); + assertEquals(2, head.getNext().getValue()); + assertNull(head.getNext().getNext()); } @Test @@ -41,10 +42,10 @@ void test4() { new ListNode(2, new ListNode(3, null))); solution.reorderList(head); - assertEquals(1, head.getVal()); - assertEquals(3, head.getNext().getVal()); - assertEquals(2, head.getNext().getNext().getVal()); - assertEquals(null, head.getNext().getNext().getNext()); + assertEquals(1, head.getValue()); + assertEquals(3, head.getNext().getValue()); + assertEquals(2, head.getNext().getNext().getValue()); + assertNull(head.getNext().getNext().getNext()); } @Test @@ -54,11 +55,11 @@ void test5() { new ListNode(3, new ListNode(4, null)))); solution.reorderList(head); - assertEquals(1, head.getVal()); - assertEquals(4, head.getNext().getVal()); - assertEquals(2, head.getNext().getNext().getVal()); - assertEquals(3, head.getNext().getNext().getNext().getVal()); - assertEquals(null, head.getNext().getNext().getNext().getNext()); + assertEquals(1, head.getValue()); + assertEquals(4, head.getNext().getValue()); + assertEquals(2, head.getNext().getNext().getValue()); + assertEquals(3, head.getNext().getNext().getNext().getValue()); + assertNull(head.getNext().getNext().getNext().getNext()); } @Test @@ -69,12 +70,12 @@ void test6() { new ListNode(4, new ListNode(5, null))))); solution.reorderList(head); - assertEquals(1, head.getVal()); - assertEquals(5, head.getNext().getVal()); - assertEquals(2, head.getNext().getNext().getVal()); - assertEquals(4, head.getNext().getNext().getNext().getVal()); - assertEquals(3, head.getNext().getNext().getNext().getNext().getVal()); - assertEquals(null, head.getNext().getNext().getNext().getNext().getNext()); + assertEquals(1, head.getValue()); + assertEquals(5, head.getNext().getValue()); + assertEquals(2, head.getNext().getNext().getValue()); + assertEquals(4, head.getNext().getNext().getNext().getValue()); + assertEquals(3, head.getNext().getNext().getNext().getNext().getValue()); + assertNull(head.getNext().getNext().getNext().getNext().getNext()); } @Test @@ -90,16 +91,16 @@ void test7() { new ListNode(9, new ListNode(10, null)))))))))); solution.reorderList(head); - assertEquals(1, head.getVal()); - assertEquals(10, head.getNext().getVal()); - assertEquals(2, head.getNext().getNext().getVal()); - assertEquals(9, head.getNext().getNext().getNext().getVal()); - assertEquals(3, head.getNext().getNext().getNext().getNext().getVal()); - assertEquals(8, head.getNext().getNext().getNext().getNext().getNext().getVal()); - assertEquals(4, head.getNext().getNext().getNext().getNext().getNext().getNext().getVal()); - assertEquals(7, head.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getVal()); - assertEquals(5, head.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getVal()); - assertEquals(6, head.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getVal()); - assertEquals(null, head.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext()); + assertEquals(1, head.getValue()); + assertEquals(10, head.getNext().getValue()); + assertEquals(2, head.getNext().getNext().getValue()); + assertEquals(9, head.getNext().getNext().getNext().getValue()); + assertEquals(3, head.getNext().getNext().getNext().getNext().getValue()); + assertEquals(8, head.getNext().getNext().getNext().getNext().getNext().getValue()); + assertEquals(4, head.getNext().getNext().getNext().getNext().getNext().getNext().getValue()); + assertEquals(7, head.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getValue()); + assertEquals(5, head.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getValue()); + assertEquals(6, head.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getValue()); + assertNull(head.getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext().getNext()); } } diff --git a/src/test/java/io/dksifoua/leetcode/reverselinkedlist/SolutionTest.java b/src/test/java/io/dksifoua/leetcode/reverselinkedlist/SolutionTest.java index 9bdcef3..36ae43d 100644 --- a/src/test/java/io/dksifoua/leetcode/reverselinkedlist/SolutionTest.java +++ b/src/test/java/io/dksifoua/leetcode/reverselinkedlist/SolutionTest.java @@ -1,5 +1,6 @@ package io.dksifoua.leetcode.reverselinkedlist; +import io.dksifoua.leetcode.utils.ListNode; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -9,16 +10,15 @@ public class SolutionTest { @Test void test1() { - Solution.ListNode head = new Solution.ListNode(1, - new Solution.ListNode(2, - new Solution.ListNode(3, - new Solution.ListNode(4, - new Solution.ListNode(5, null))))); - Solution.ListNode reversedHead = solution.reverseList(head); - Solution.ListNode reversedCurrent = reversedHead; + ListNode head = new ListNode(1, + new ListNode(2, + new ListNode(3, + new ListNode(4, + new ListNode(5, null))))); + ListNode reversedCurrent = solution.reverseList(head); int val = 5; while (reversedCurrent != null) { - Assertions.assertEquals(val, reversedCurrent.getVal()); + Assertions.assertEquals(val, reversedCurrent.getValue()); val -= 1; reversedCurrent = reversedCurrent.getNext(); } @@ -26,16 +26,15 @@ void test1() { @Test void testOptimal1() { - Solution.ListNode head = new Solution.ListNode(1, - new Solution.ListNode(2, - new Solution.ListNode(3, - new Solution.ListNode(4, - new Solution.ListNode(5, null))))); - Solution.ListNode reversedHead = solution.reverseListOptimal(head); - Solution.ListNode reversedCurrent = reversedHead; + ListNode head = new ListNode(1, + new ListNode(2, + new ListNode(3, + new ListNode(4, + new ListNode(5, null))))); + ListNode reversedCurrent = solution.reverseListOptimal(head); int val = 5; while (reversedCurrent != null) { - Assertions.assertEquals(val, reversedCurrent.getVal()); + Assertions.assertEquals(val, reversedCurrent.getValue()); val -= 1; reversedCurrent = reversedCurrent.getNext(); } @@ -43,15 +42,13 @@ void testOptimal1() { @Test void test2() { - Solution.ListNode head = null; - Solution.ListNode reversedHead = solution.reverseList(head); + ListNode reversedHead = solution.reverseList(null); Assertions.assertNull(reversedHead); } @Test void testOptimal2() { - Solution.ListNode head = null; - Solution.ListNode reversedHead = solution.reverseListOptimal(head); + ListNode reversedHead = solution.reverseListOptimal(null); Assertions.assertNull(reversedHead); } }