Leetcode C 回文鍊錶

2021-09-27 01:31:02 字數 1148 閱讀 1431

1.題目

請判斷乙個鍊錶是否為回文鍊錶。

示例 1:

輸入:1->2輸出:false
示例 2:

輸入:1->2->2->1輸出:true
2.code

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

if(n==1||n==0)

return true;

if(n%2==0)

while(phead->next!=null&&pcur!=null)

phead=phead->next;

pcur=pcur->next;

}if(flag==1)

return false;

else

return true;

}else

phead=phead->next;

while(phead->next!=null&&pcur!=null)

phead=phead->next;

pcur=pcur->next;

}if(flag==1)

return false;

else

return true;}}

};

3.思路

首先求鍊錶長度,得知鍊錶長度的時候分兩種情況:長度為奇數;長度為偶數。(1)長度為奇數,則中間有乙個數,兩頭完全對稱。(2)長度為偶數,中間沒有多餘的數,兩頭完全對稱。

其次,我們的思路是反轉一半鍊錶,如果是個回文鍊錶的話,那麼經過反轉的這一半和剩下的這一半是完全相等的。當然如果是奇數的情況,開頭會多乙個數。我們只需要分別遍歷這兩部分鍊錶,看是否會相等。如果全部相等,那麼回文,否則no.

在反轉鍊錶的時候,我們選擇原地反轉,但是需要額外申請乙個頭節點,原來的鍊錶沒有頭節點,當我們直接賦值pre=phead=head,進行操作會發生錯誤,進入死迴圈。

LeetCode c 回文鍊錶

題目如下 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?思路一 首先讀題,不考慮高階情況的話,由於回文鍊錶的數值是對稱的。因此,我們可以遍歷一遍輸入的鍊錶,宣告...

LeetCode C 環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸...

LeetCode C 相交鍊錶

編寫乙個程式,找到兩個單鏈表相交的起始節點。如下面的兩個鍊錶 在節點 c1 開始相交。示例 1 輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,4,5 skipa 2,skipb 3 輸出 reference of the node with valu...