两两交换链表中的节点
来源:互联网 发布:高校工资知乎 编辑:程序博客网 时间:2024/05/07 10:18
题目
给一个链表,两两交换其中的节点,然后返回交换后的链表。
样例
给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。
解题
递归方式
交换p 和 p.next 结点
swapHead = p.next
swapHead.next = p
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { /** * @param head a ListNode * @return a ListNode */ public ListNode swapPairs(ListNode head) { // Write your code here ListNode p = head; if(p==null || p.next==null) return p; ListNode pNextNext = p.next.next; ListNode swapHead = p.next; // 交换p 和 p.next 两个结点 swapHead.next = p; // 进行交换 ListNode swapNextNext = swapPairs(pNextNext); // 递归 p.next = swapNextNext; return swapHead; }}
循环方式
参考链接
加上头结点,利用头结点进行交换
public class Solution { /** * @param head a ListNode * @return a ListNode */ public ListNode swapPairs(ListNode head) { ListNode dummy = new ListNode(0); dummy.next = head; head = dummy; while (head.next != null && head.next.next != null) { ListNode n1 = head.next, n2 = head.next.next; // head->n1->n2->... // => head->n2->n1->... head.next = n2; n1.next = n2.next; n2.next = n1; // move to next pair head = n1; } return dummy.next; }}
更改值的方式进行交换
public class Solution { /** * @param head a ListNode * @return a ListNode */ public ListNode swapPairs(ListNode head) { // Write your code here ListNode p = head; if(p==null || p.next==null) return p; while(p != null && p.next != null){ int val = p.val; p.val = p.next.val; p.next.val = val; p = p.next.next; } return head; }}
0 0
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- Dromicpalin Substrings
- 推荐几款好用的模态框附带教程
- RxJava 并发 之测试
- poj3468 A Simple Problem with Integers 线段树区间更新,区间求和
- iOS学习(十六)Objective-C 继承方式下的消息传递
- 两两交换链表中的节点
- 1039. Course List for Student (25)
- 线性表的长度为10,在最坏情况下,冒泡排序需要比较次数为()----腾讯2016研发工程师在线模拟笔试题
- gcc: error: elf_i386: No such file or directory
- 深圳杯2016A题 雨污分流与雨污混流,截排与清源?
- 橙子第一篇文章
- yii2获取表及字段
- 程序员的基础生存技能:高效用Google--2016-07-08 Python开发者
- python学习——使用文本编辑器