两两交换链表的结点——力扣——24题
程序员文章站
2022-03-21 13:09:54
24.给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.解题思路1.交换节点接替2.建立辅助节点3.在脑子里想好交换的需要交换的节点4.循环的下一个节点需要的值代码解法1class Solution { public ListNode swapPairs(ListNode head) { List...
24.给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
解题思路
1.交换节点接替
2.建立辅助节点
3.在脑子里想好交换的需要交换的节点
4.循环的下一个节点需要的值
代码
解法1
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode pre = dummy;
while(head!=null&&head.next!=null){
ListNode aa = head;
ListNode bb= head.next;
pre.next = bb;
aa.next = bb.next;
bb.next=aa;
pre = aa;
head = aa.next;
}
return dummy.next;
}
}
解法2——递归求解
public ListNode swapPairs(ListNode head) {
if(head==null||head.next==null){
return head;
}
ListNode aa = head;
ListNode bb= head.next;
aa.next = swapPairs(bb.next.next);
bb.next = aa;
return bb;
}
本文地址:https://blog.csdn.net/w5025/article/details/107894739