請編寫乙個函式,檢查鍊錶是否為回文。
給定乙個鍊錶listnode* phead,請返回乙個bool,代表鍊錶是否為回文。
測試樣例:
返回:true
返回:false
回文結構,空間複雜度為o(1)的做法,首先利用快慢兩個指標找到鍊錶的中間點,之後將鍊錶中間點之後的鍊錶翻轉,之後比較前面和後面的鍊錶,如果全部相等返回true,如果不是返回false,理論上之後還應該恢復鍊錶,但是要是判斷回文結構可以不還原,**如下:
/*
struct listnode
};*/
class palindrome
else
if(!fast->next)
else
}listnode* temp=phead;
while(afterhead)
return
true;
}void reverselist(listnode* head,listnode* &afterhead)
listnode* pre=prehead;
listnode* next=head->next;
while(next)
head->next=pre;
afterhead=head;
prehead->next->next=null;//讓翻轉後鍊錶最後乙個元素指向空。
}};
鍊錶回文結構
對於乙個鍊錶,請設計乙個時間複雜度為o n 額外空間複雜度為o 1 的演算法,判斷其是否為回文結構。給定乙個鍊錶的頭指標head,請返回乙個bool值,代表其是否為回文結構。思路 實現 public class palindromelist 此時slow位於鍊錶中間,開始反轉鍊錶slow後面的部分 ...
鍊錶回文結構
對於乙個鍊錶,請設計乙個時間複雜度為o n 額外空間複雜度為o 1 的演算法,判斷其是否為回文結構。給定乙個鍊錶的頭指標a,請返回乙個bool值,代表其是否為回文結構。保證鍊錶長度小於等於900。測試樣例 1 2 2 1返回 true解題思路 1 找到鍊錶的中點,2 翻轉後半部分的鍊錶節點 3 依次...
鍊錶的回文結構
題目描述 對於乙個鍊錶,請設計乙個時間複雜度為o n 額外空間複雜度為o 1 的演算法,判斷其是否為回文結構。給定乙個鍊錶的頭指標a,請返回乙個bool值,代表其是否為回文結構。保證鍊錶長度小於等於900。測試樣例 1 2 2 1 返回 true 大體思路 通過快慢指標法得到mid 慢的依次存入棧 ...