![](/img/trans.png)
[英]when you are "a=b=c=ListNode(0,head)", does it take up more memory because of those a,b,c's?
[英]Error when changing the order of A and B in (A&B) AND operator
以下是用於確定 LinkedList 是否為回文的代碼 為什么此代碼在此行時顯示錯誤 bool isPal = check(p->next) & (temp->val == p->val); 在下面的代碼中寫成 bool isPal = (temp->val == p->val) & check(p->next); 對於輸入[1,0,1]------只是取AND的順序顛倒了
class Solution {
public:
ListNode* temp;
bool isPalindrome(ListNode* head) {
temp = head;
return check(head);
}
bool check(ListNode* p) {
if (NULL == p) return true;
bool isPal = check(p->next) & (temp->val == p->val);
temp = temp->next;
return isPal;
}
};
bool a = check(p->next);
bool b = (temp->val == p->val);
bool isPal = a & b;
這通過故意移動對 check() 的調用來解決這個問題,以便在嘗試計算 temp 的值之前,可以在 check() 調用內部迭代 temp。
考慮以下:
bool b = (temp->val == p->val);
bool a = check(p->next);
bool isPal = a & b;
temp 的值是在調用 check() 之前計算的,因此在 temp 可以被迭代之前。
使用 [1,0,1] 示例,我將逐步執行 check() 的遞歸調用:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.