leetcode演算法題24 兩兩交換鍊錶中的節點

2021-10-24 20:26:08 字數 816 閱讀 3553

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

輸入:head = [1,2,3,4]

輸出:[2,1,4,3]

輸入:head =

輸出:

輸入:head = [1]

輸出:[1]

思路一:這個題是基本的鍊錶操作題,可以採取迭代的方法實現,先建立 dummy 節點作為頭節點,讓dummy的next指向head,然後定義cur、p、q三個指標,分別指向頭節點和第一第二兩個結點。由於是要兩兩交換鍊錶的結點,比如1->2->3->4的話,p和q分別指向1和2,要變換維2->1->3->4,因此我們需要先讓cur指向q,即2結點,而cur是始終指向p的前乙個結點的,因此讓cur指向p結點,即1結點,然後讓p的下乙個結點指向q的下乙個結點,即3結點,然後讓p指向q的下乙個結點,來進行下一次迴圈操作,最後讓q的下乙個結點指向cur(注意這裡只能指向cur結點,也就是建立cur結點的作用,因為p結點已經改變位置了),一次交換就結束了。

做題的時候可以畫個圖,避免把自己繞暈了

class

solution

return dummy-

>next;}}

;

思路二:利用回溯的思想,遞迴遍歷到鍊錶末尾,然後先交換末尾兩個,然後依次往前交換:

class

solution

};

leetcode演算法題 鍊錶 兩兩交換鍊錶中的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。package com.leetcode.鍊錶 author markuszhang vm args date create in 2020 2 2 15 23 public cl...

LeetCode 24兩兩交換鍊錶的節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 給定 1 2 3 4,你應該返回 2 1 4 3.class solution listnode next head.next head.next next.next 指向下...

24 兩兩交換鍊錶中的節點 leetcode

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 給定1 2 3 4,你應該返回2 1 4 3.設定三個指標,分別指向前後和當前節點。首先設定建立乙個prehead結點,用來返回結果。接著建立left mid right三個...