// Time: O(n) // Space: O(n) public static LinkedListNode PartitionLinkedList(LinkedListNode head, int partition) { var leftList = new List <int>(); var rightList = new List <int>(); var current = head; while (current != null) { if (current.Data < partition) { leftList.Add(current.Data); } else { rightList.Add(current.Data); } current = current.Next; } // concat rightList to end of the leftList leftList.AddRange(rightList); return(LinkedListNode.CreateLinkedList(leftList)); }
public void LoopDetection_ShouldReturnNull() { // Assign var testList = LinkedListNode.CreateLinkedList(new int[] { 1, 2, 3, 4, 5, 6 }); // Act var result = Solution.LoopDetection(testList); // Assert Assert.AreEqual(null, result); }
public void KthToLastTwoPointers_ShouldReturnCorrectValue() { // Assign var testList = LinkedListNode.CreateLinkedList(new int[] { 35, 15, 4, 20, 99, 6 }); // Act var result = Solution.ReturnKthToLastTwoPointers(testList, 3); // Assert Assert.AreEqual(20, result.Data); }
public void SumListsReverseOrder_ShouldReturnCorrectLinkedList() { // Assign var testListA = LinkedListNode.CreateLinkedList(new int[] { 7, 1, 6 }); var testListB = LinkedListNode.CreateLinkedList(new int[] { 5, 9, 2 }); // Act var resultList = Solution.SumListsReverseOrder(testListA, testListB); // Assert Assert.AreEqual("2 -> 1 -> 9 -> null", resultList.LinkedListToString()); }
public void PartitioniLinkedList_ShouldReturnCorrectLinkedList() { // Assign var testList = LinkedListNode.CreateLinkedList(new int[] { 3, 5, 8, 5, 10, 2, 1 }); var partition = 5; // Act var resultList = Solution.PartitionLinkedList(testList, partition); // Assert Assert.AreEqual("3 -> 2 -> 1 -> 5 -> 8 -> 5 -> 10 -> null", resultList.LinkedListToString()); }
public void DeleteMiddleNode_ShouldRemoveCorrectNode() { // Assign var test = LinkedListNode.CreateLinkedList(new int[] { 1, 2, 3, 4, 5, 6 }); Console.WriteLine(test.LinkedListToString()); // Act Solution.DeleteMiddleNode(test); // Assert Assert.AreEqual("1 -> 2 -> 4 -> 5 -> 6 -> null", test.LinkedListToString()); }
public void IsPalindrome_ShouldReturnTrue() { // Assign var testListA = LinkedListNode.CreateLinkedList(new int[] { 7, 1, 6, 2, 6, 1, 7 }); var testListB = LinkedListNode.CreateLinkedList(new int[] { 7, 1, 6, 6, 1, 7 }); // Act var res = Solution.IsPalindrome(testListA); var res1 = Solution.IsPalindrome(testListB); // Assert Assert.AreEqual(true, res); Assert.AreEqual(true, res1); }
public void RemoveDup_ShouldRemoveDuplicateNode() { // Assign var test = LinkedListNode.CreateLinkedList(new int[] { 2, 3, 3, 3, 1, 4, 2, 1, 5 }); var test1 = LinkedListNode.CreateLinkedList(new int[] { 1, 1, 1, 1, 1, 1 }); // Act //var result = Solution.RemoveDup(test); //var result1 = Solution.RemoveDup(test1); var result = Solution.RemoveDupTwo(test); var result1 = Solution.RemoveDupTwo(test1); // Assert Assert.AreEqual("2 -> 3 -> 1 -> 4 -> 5 -> null", result.LinkedListToString()); Assert.AreEqual("1 -> null", result1.LinkedListToString()); }
public void NthFromEnd_ShouldReturnCorrectNode() { // Assign var head = LinkedListNode.CreateLinkedList(new int[] { 7, 6, 5, 4, 3, 2, 1 }); var head2 = LinkedListNode.CreateLinkedList(new int[] { 1, 2, 3, 4 }); // Act var res = Solution.NthFromEnd(head, 1); // should return 1 var res1 = Solution.NthFromEnd(head, 5); // should return 5 var res2 = Solution.NthFromEnd(head2, 2); // should return 3 var res3 = Solution.NthFromEnd(head2, 5); // should return null // Assert Assert.AreEqual(res.Data, 1); Assert.AreEqual(res1.Data, 5); Assert.AreEqual(res2.Data, 3); Assert.IsNull(res3); }
public void KthToLastRecursive_ShouldPrintCorrectValue() { var testList = LinkedListNode.CreateLinkedList(new int[] { 99, 88, 77, 44, 33, 22, 11, 666, 2 }); var result = Solution.ReturnKthToLastRecursive(testList, 9); }