LintCode 回文鏈表

題目

設(shè)計(jì)一種方式檢查一個鏈表是否為回文鏈表野芒。

樣例
1->2->1 就是一個回文鏈表扳剿。

分析

鏈表由于其特殊的結(jié)構(gòu),沒法像數(shù)組那樣判斷回文掂恕,所以比較原始的方法,先找到鏈表的中間節(jié)點(diǎn)废膘,然后將后半部分反轉(zhuǎn)竹海,然后逐個比較即可。
鏈表中的算法丐黄,通常以尋找鏈表中間節(jié)點(diǎn),反轉(zhuǎn)鏈表孔飒,合并兩個鏈表這些基本操作構(gòu)成灌闺,所以掌握這些基本操作很重要。
例如本題中尋找鏈表的中間節(jié)點(diǎn)的方法坏瞄,就是用兩個指針一快一慢桂对,一個走兩步,一個走一步鸠匀,快指針先走到底了蕉斜,這時(shí)候慢指針就指向中間節(jié)點(diǎn)。

代碼

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    /**
     * @param head a ListNode
     * @return a boolean
     */
     public boolean isPalindrome(ListNode head) {
        if (head == null) {
            return true;
        }
        
        ListNode middle = findMiddle(head);
        middle.next = reverse(middle.next);
        
        ListNode p1 = head, p2 = middle.next;
        while (p1 != null && p2 != null && p1.val == p2.val) {
            p1 = p1.next;
            p2 = p2.next;
        }
        
        return p2 == null;
    }
    
    private ListNode findMiddle(ListNode head) {
        if (head == null) {
            return null;
        }
        ListNode slow = head, fast = head.next;
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        
        return slow;
    }
    
    private ListNode reverse(ListNode head) {
        ListNode prev = null;
        
        while (head != null) {
            ListNode temp = head.next;
            head.next = prev;
            prev = head;
            head = temp;
        }
        
        return prev;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缀棍,一起剝皮案震驚了整個濱河市宅此,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌爬范,老刑警劉巖父腕,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異青瀑,居然都是意外死亡璧亮,警方通過查閱死者的電腦和手機(jī)萧诫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枝嘶,“玉大人帘饶,你說我怎么就攤上這事∪悍觯” “怎么了尖奔?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長穷当。 經(jīng)常有香客問我提茁,道長,這世上最難降的妖魔是什么馁菜? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任茴扁,我火速辦了婚禮,結(jié)果婚禮上汪疮,老公的妹妹穿的比我還像新娘峭火。我一直安慰自己,他們只是感情好智嚷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布卖丸。 她就那樣靜靜地躺著,像睡著了一般盏道。 火紅的嫁衣襯著肌膚如雪稍浆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天猜嘱,我揣著相機(jī)與錄音衅枫,去河邊找鬼。 笑死朗伶,一個胖子當(dāng)著我的面吹牛弦撩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播论皆,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼益楼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了点晴?” 一聲冷哼從身側(cè)響起感凤,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎觉鼻,沒想到半個月后俊扭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坠陈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年萨惑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捐康。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡庸蔼,死狀恐怖解总,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情姐仅,我是刑警寧澤花枫,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站掏膏,受9級特大地震影響劳翰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜馒疹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一佳簸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颖变,春花似錦生均、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至衔峰,卻和暖如春佩脊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朽色。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工邻吞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人葫男。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像崔列,于是被迫代替她去往敵國和親梢褐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 設(shè)計(jì)一種方式檢查一個鏈表是否為回文鏈表赵讯。再用原地反轉(zhuǎn)解決一次
    鬼谷神奇閱讀 388評論 0 1
  • //leetcode中還有花樣鏈表題盈咳,這里幾個例子,冰山一角 求單鏈表中結(jié)點(diǎn)的個數(shù)----時(shí)間復(fù)雜度O(n)這是最...
    暗黑破壞球嘿哈閱讀 1,518評論 0 6
  • 1. 關(guān)于診斷X線機(jī)準(zhǔn)直器的作用边翼,錯誤的是()鱼响。 (6.0 分) A. 顯示照射野 B. 顯示中心線 C. 屏蔽多...
    我們村我最帥閱讀 10,391評論 0 5
  • 鏈表問題是面試過程中經(jīng)常被問到的一部分,很考查編程功底组底。最近刷了 LeetCode 上鏈表部分的面試題丈积,我總結(jié)了一...
    JohnnyShieh閱讀 4,958評論 0 9
  • 201. M-Q型顯影液組合是()筐骇。 (2.0 分) A. 米吐爾與菲尼酮的組合 B. 對苯二酚和菲尼酮的組合 C...
    我們村我最帥閱讀 3,390評論 0 4