leetcode|leetcode 24. 两两交换链表中的节点
题目描述
【leetcode|leetcode 24. 两两交换链表中的节点】给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
说明:
- 你的算法只能使用常数的额外空间。
- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
// ListNode Definition for singly-linked list.
type ListNode struct {
Valint
Next *ListNode
}func swapPairs(head *ListNode) *ListNode {
if head == nil || head.Next == nil {
return head
}var prev *ListNode
cur := head
head = cur.Next
for ;
cur != nil && cur.Next != nil;
cur = cur.Next {
next := cur.Next
//注意:第一次循环时,prev为nil
if prev != nil {
prev.Next = next
}
//交换两个节点
cur.Next, next.Next, prev = next.Next, cur, cur
}return head
}
GitHub
- 源码传送门
- 项目中会提供各种数据结构及算法的Golang实现, LeetCode解题思路及答案
推荐阅读
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- LeetCode(03)Longest|LeetCode(03)Longest Substring Without Repeating Characters
- Leetcode|Leetcode No.198打家劫舍
- [leetcode数组系列]1两数之和
- 数据结构和算法|LeetCode 的正确使用方式
- leetcode|今天开始记录自己的力扣之路
- LeetCode|LeetCode 876. 链表的中间结点