【LeetCode】24. Swap Nodes in Pairs
来源:互联网 发布:win7 64位优化版下载 编辑:程序博客网 时间:2024/06/07 00:13
题目描述
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4
, you should return the list as 2->1->4->3
.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
解题思路
以下提供两种解题思路:
- 虽然每次交换的是两个节点,但实际上还需要记录前一个节点的父节点,这样才能确保交换后的链接能够保持连续。所以,可以在链表前加一个dummy节点。顺序遍历整个链表,使用一个cnt来记录是否需要进行交换,直接模拟链表的交换过程即可。
- 每两个节点的交换操作其实都是相同的,所以可以使用递归求解。
AC代码
- 解法一
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode* cur = head; ListNode* prev; ListNode dummy(-1); ListNode* first = &dummy; first->next = head; int cnt = 0; while (cur != NULL) { // odd number, swap and update if (cnt & 1) { //swap prev->next = cur->next; cur->next = prev; first->next = cur; //update first = prev; cur = prev->next; } else { prev = cur; cur = cur->next; } cnt++; } return dummy.next; }};
- 解法二
public ListNode swapPairs(ListNode head) { if (head == null || head.next == null) { return head; } ListNode newhd = head.next; head.next = swapPairs(newhd.next); newhd.next = head; return newhd;}
1 0
- [LeetCode]24.Swap Nodes in Pairs
- 24. Swap Nodes in Pairs Leetcode Python
- LeetCode --- 24. Swap Nodes in Pairs
- LeetCode 24.Swap Nodes in Pairs
- [Leetcode] 24. Swap Nodes in Pairs
- 【LeetCode】24.Swap Nodes in Pairs
- [leetcode] 24.Swap Nodes in Pairs
- **LeetCode 24. Swap Nodes in Pairs
- 24. Swap Nodes in Pairs LeetCode
- leetcode 24. Swap Nodes in Pairs
- leetcode 24. Swap Nodes in Pairs
- LeetCode--24. Swap Nodes in Pairs
- leetcode 24. Swap Nodes in Pairs
- 【LeetCode】24. Swap Nodes in Pairs
- [leetcode] 24. Swap Nodes in Pairs
- LeetCode 24. Swap Nodes in Pairs
- LeetCode-24.Swap Nodes in Pairs
- LeetCode 24. Swap Nodes in Pairs
- Hibernate注解方式处理实体映射关系
- ASP.NET ZERO 学习 —— (6) 开发手册之MVC后台多页面应用及迁移控制台程序
- 什么是关系型数据库??
- leetcode21~Merge Two Sorted Lists
- MyBatis的联合查询
- 【LeetCode】24. Swap Nodes in Pairs
- addroid实现广告倒计时跳Activity之CountDownTimer
- C#在窗体上画椭圆和三角形
- 循环的边界溢出
- 算法学习之栈的实现
- 图解HTTP之HTTPS详解
- Android Animation 动画(一)
- Android native应用开发简明教程 (1)
- NPoco源码怎么看