Beispiel #1
0
        //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);
        }