mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-08-03 02:47:26 +08:00
1.1 KiB
1.1 KiB
24. Swap Nodes in Pairs
题目
Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list's nodes, only nodes itself may be changed.
Example:
Given 1->2->3->4, you should return the list as 2->1->4->3.
题目大意
两两相邻的元素,翻转链表
解题思路
按照题意做即可。
代码
package leetcode
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func swapPairs(head *ListNode) *ListNode {
if head == nil || head.Next == nil {
return head
}
s := head.Next
var behind *ListNode
for head.Next != nil {
headNext := head.Next
if behind != nil && behind.Next != nil {
behind.Next = headNext
}
var next *ListNode
if head.Next.Next != nil {
next = head.Next.Next
}
if head.Next.Next != nil {
head.Next = next
} else {
head.Next = nil
}
headNext.Next = head
behind = head
if head.Next != nil {
head = next
}
}
return s
}