Я решаю вопрос leetcode - проверить, является ли данный связанный список палиндромом или нет - и застрял на тестовом примере [1,0,0]. Раньше я застрял на тестовом примере [1,0,1], так как мой код работал только для четных узлов. Я понял это и добавил условие if. Но сейчас я застрял на тестовом примере [1,0,1].
Код: Выделить всё
bool isPalindrome(ListNode* head)
{
if(head == NULL || head->next == NULL)
{
return head;
}
ListNode* one_step = head;
ListNode* two_step = head;
stack check;
while(two_step != NULL && two_step->next != NULL)
{
check.push(one_step->val);
one_step = one_step->next;
two_step = two_step->next->next;
}
if(two_step != NULL) //to make the code work for odd number of node
{
if(two_step->next == NULL)
{
check.push(one_step->val);
}
}
while(one_step != NULL)
{
if(one_step->val == check.top())
{
return true;
}
check.pop();
one_step = one_step->next;
}
return false;
}
Источник: https://stackoverflow.com/questions/781 ... -case-fail
Мобильная версия