//static void Main() //{ // SingleLinkedList ll1 = new SingleLinkedList(); // ll1.InsertLast(2); // ll1.InsertLast(4); // ll1.InsertLast(5); // ll1.InsertLast(1); // ll1.InsertLast(3); // SingleLinkedList ll2 = new SingleLinkedList(); // ll2.InsertLast(6); // ll2.InsertLast(9); // ll2.InsertLast(8); // ll2.InsertLast(7); // ll2.InsertLast(10); // var result = SortedMergeLinkedListRecursion(ll1.head, ll2.head); // Console.WriteLine("Completed"); //} //O(nLog(n)) time complexity //O(n) space public SLLNode MergeSort(SLLNode head) { if (head == null || head.next == null) { return(head); } SLLNode middle = GetMiddleNode.GetMiddleNodeLinkedList(head); SLLNode middlenext = middle.next; middle.next = null; SLLNode left = MergeSort(head); SLLNode right = MergeSort(middlenext); SLLNode sortedlist = SortedMergeLinkedListRecursion(left, right); return(sortedlist); }
//static void Main() //{ // SingleLinkedList sll = new SingleLinkedList(); // sll.InsertLast(0); // sll.InsertLast(0); // var ispalind = IsPalindrome(sll.head); // Console.WriteLine(); //} //O(Log(n)) time complexity //O(1) space static bool IsPalindrome(SLLNode head) { var middle = GetMiddleNode.GetMiddleNodeLinkedList(head); var half1 = head; var half2 = ReverseLinkedList.Reverse(middle); while (half1 != null && half2 != null) { if (half1.data != half2.data) { return(false); } half1 = half1.next; half2 = half2.next; } return(true); }