力扣——两两交换链表中的节点
Posted jaypark
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣——两两交换链表中的节点相关的知识,希望对你有一定的参考价值。
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定1->2->3->4
, 你应该返回2->1->4->3
.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode swapPairs(ListNode head) { if(head==null) return head; ListNode preHead=new ListNode(-1); preHead.next=head; ListNode left=preHead; ListNode mid=head; if(head.next==null)//如果只有一个节点,直接返回这个节点 return head; ListNode right=head.next; while(mid!=null&&mid.next!=null){ mid.next=right.next; right.next=mid; left.next=right; left=mid; mid=left.next; if(mid!=null) right=mid.next; } return preHead.next; } }
以上是关于力扣——两两交换链表中的节点的主要内容,如果未能解决你的问题,请参考以下文章
代码随想录算法训练营第四天 | 24.两两交换链表中的节点19.删除链表的倒数第N个节点160.相交链表142.环形链表II