234. Palindrome Linked List

創(chuàng)新互聯(lián)服務(wù)項目包括札達網(wǎng)站建設(shè)、札達網(wǎng)站制作、札達網(wǎng)頁制作以及札達網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,札達網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到札達省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Given a singly linked list, determine if it is a palindrome.
Follow up:
Could you do it in O(n) time and O(1) space?
題目大意:
判斷一個單鏈表是否為回文鏈表。
思路:
找到鏈表中間的節(jié)點,將鏈表從中間分為2部分,右半部分進行鏈表反向轉(zhuǎn)換,然后左半部分和反轉(zhuǎn)后的右半部分鏈表進行比較。得出結(jié)果。
代碼如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode * reverseList(ListNode *head) //鏈表反轉(zhuǎn)
{
ListNode *pre,*next;
pre = NULL;
next = NULL;
while(head)
{
next = head->next;
head->next = pre;
pre = head;
head = next;
}
return pre;
}
bool isPalindrome(ListNode* head) {
if( NULL == head || NULL == head->next)
return true;
int len = 0;
ListNode *p = head;
while(p)
{
len++;
p = p->next;
}
ListNode * rightListHead;
rightListHead = head;
int leftLen = len / 2;
int rightLen = len - leftLen;
int i = leftLen;
while(i)
{
rightListHead = rightListHead->next;
i--;
}
rightListHead = reverseList(rightListHead);
ListNode * left = head;
ListNode * right = rightListHead;
while(i < leftLen)
{
if(left->val == right->val)
{
left = left->next;
right = right->next;
}
else
{
return false;
}
i++;
}
return true;
}
};復(fù)習(xí)了單鏈表反轉(zhuǎn)的方法。
2016-08-12 20:17:23
分享文章:leetCode234.PalindromeLinkedList鏈表
URL地址:http://chinadenli.net/article40/pgjieo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、服務(wù)器托管、網(wǎng)站排名、搜索引擎優(yōu)化、品牌網(wǎng)站設(shè)計、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)