文的盲刷LeetCode 24. 兩兩交換鏈表中的節(jié)點

中文題目

給定一個鏈表,兩兩交換其中相鄰的節(jié)點露该,并返回交換后的鏈表睬棚。

示例:

給定 1->2->3->4, 你應(yīng)該返回 2->1->4->3.

說明:

  • 你的算法只能使用常數(shù)的額外空間。
  • 你不能只是單純的改變節(jié)點內(nèi)部的值解幼,而是需要實際的進行節(jié)點交換抑党。

英文題目

Given a linked list, swap every two adjacent nodes and return its head.

Example:

Given 1->2->3->4, you should return the list as 2->1->4->3.

Note:

  • Your algorithm should use only constant extra space.
  • You may not modify the values in the list's nodes, only nodes itself may be changed.

剛看到本題之時,我開始動手做撵摆,腦殘的我剛開始寫了一個極為簡練的代碼底靠,卻發(fā)現(xiàn)自己只是在交換自己新建的結(jié)點,原鏈表并無變化特铝,這里就不貼出了暑中。壹瘟。。

經(jīng)查找鳄逾,發(fā)現(xiàn)以下解法

解法:

本題可以說是一個非车竟欤基本的題,考的是鏈表的結(jié)點交換雕凹,重點在于不丟失鏈表地址

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */     
struct ListNode* swapPairs(struct ListNode* head) { // LeetCode24
    if (head == NULL || head->next == NULL) // 僅有0或1個結(jié)點 直接返回
        return head;
    
    struct ListNode* newHead, *p, *q, *temp;
    /* 下面的開空間必不可少 否則會報錯 */
    newHead = (struct ListNode*)malloc(sizeof(struct ListNode));
    newHead->next = head;
    /* 初始化 */
    temp = newHead;
    p = head;
    q = head->next;
    while (q){
        /*交換操作*/
        temp->next = q;
        p->next = q->next;  /* 整個交換的重點 將q之后的結(jié)點掛在p之后 */
        q->next = p;
        /*為下次操作準(zhǔn)備*/
        temp = p;
        p = p->next;
        if (p)
            q =  p->next;
        else
            q = NULL;
    }
    
    return newHead->next;
}

代碼說明:

  • 首先殴俱,為鏈表設(shè)置一個頭結(jié)點,防止鏈表丟失
  • 初始化p枚抵,q线欲,temp結(jié)點
  • 開始交換,直至q結(jié)點為空
  • 返回交換后的鏈表

提交結(jié)果:

leetcode24.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汽摹,一起剝皮案震驚了整個濱河市李丰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竖慧,老刑警劉巖嫌套,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異圾旨,居然都是意外死亡踱讨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門砍的,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痹筛,“玉大人,你說我怎么就攤上這事廓鞠≈愠恚” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵床佳,是天一觀的道長滋早。 經(jīng)常有香客問我,道長砌们,這世上最難降的妖魔是什么杆麸? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮浪感,結(jié)果婚禮上昔头,老公的妹妹穿的比我還像新娘。我一直安慰自己影兽,他們只是感情好揭斧,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著峻堰,像睡著了一般讹开。 火紅的嫁衣襯著肌膚如雪盅视。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天萧吠,我揣著相機與錄音左冬,去河邊找鬼。 笑死纸型,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梅忌。 我是一名探鬼主播狰腌,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼牧氮!你這毒婦竟也來了琼腔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤踱葛,失蹤者是張志新(化名)和其女友劉穎丹莲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尸诽,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡甥材,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了性含。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洲赵。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖商蕴,靈堂內(nèi)的尸體忽然破棺而出叠萍,到底是詐尸還是另有隱情,我是刑警寧澤绪商,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布苛谷,位于F島的核電站,受9級特大地震影響格郁,放射性物質(zhì)發(fā)生泄漏腹殿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一理张、第九天 我趴在偏房一處隱蔽的房頂上張望赫蛇。 院中可真熱鬧,春花似錦雾叭、人聲如沸悟耘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暂幼。三九已至筏勒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旺嬉,已是汗流浹背管行。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留邪媳,地道東北人捐顷。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像雨效,于是被迫代替她去往敵國和親迅涮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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