判斷是不是回文鍊錶的方法 3種

2021-09-24 10:14:55 字數 882 閱讀 9140

struct treelist

treelist(int a)

};//使用棧來做,這是最簡單的方法,空間複雜度為o(n)

bool isre_1(treelist *p)

while (p)

return true;

}//使用快慢指標尋找中點,能夠比普通的暴力解法省一半的空間

bool isre_2(treelist* p)

} slow = slow->next;

stackst;

while (slow)

while (!st.empty())

else

} cout << "是回文" << endl;

return true;

}//只是用有限幾個變數的解法,比上面的要難很多

bool isre_3(treelist*p)

} treelist *mid = slow;

treelist *pre = slow->next;

treelist *after = slow;

treelist *temp = null;

while (pre)

mid->next = null;

bool is = true;

while (p&&after)

else

} pre = temp->next;

after = temp;

after->next = null;

treelist* back = null;

while (pre)

mid->next = back;

return is;

}

判斷鍊錶是不是回文數

主要思想,先找到中間結點,對後半段鍊錶反轉,然後一一對比資料,看看是不是相同,相同就是回文鍊錶,不同就不是 import sys 引用當前資料夾下的single linked list from singly linked list import singlylinkedlist def rever...

leetcode 234 判斷是不是回文鍊錶

聰明的我想到了利用棧先進後出的特性,求出鍊錶的長度之後前一半入棧,後一半出棧的方法,雖然簡單易懂,但是效率有點低,貼 definition for singly linked list.struct listnode listnode int x val x next nullptr listnod...

判斷一條單向鍊錶是不是 回文

題目 判斷一條單向鍊錶是不是 回文 思路一 採用快慢指標,慢指標入棧,當快指標為null時,出棧和慢指標比較即可。時間複雜度o n 空間複雜度o n 優點 比較好實現,且沒有修改鍊錶 缺點 需要分配記憶體 include include include typedef int elem typede...