511.Swap Two Nodes in Linked List-交换链表当中两个节点(中等题)
来源:互联网 发布:按键精灵抓取网页数据 编辑:程序博客网 时间:2024/05/22 07:02
交换链表当中两个节点
题目
给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。
注意事项
你需要交换两个节点而不是改变节点的权值样例
给出链表 1->2->3->4->null ,以及 v1 = 2 , v2 = 4
返回结果 1->4->3->2->null。题解
基本的链表题,需注意两个节点相邻的问题。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { /** * @param head a ListNode * @oaram v1 an integer * @param v2 an integer * @return a new head of singly-linked list */ public ListNode swapNodes(ListNode head, int v1, int v2) { // Write your code here if (head == null || head.next == null || v1 == v2) { return head; } ListNode newHead = new ListNode(1); newHead.next = head; ListNode result = newHead; ListNode v1Pre = null; ListNode v2Pre = null; while (newHead.next != null) { if (newHead.next.val == v1 || newHead.next.val == v2) { if (v1Pre == null) { v1Pre = newHead; } else { v2Pre = newHead; ListNode v1Node = v1Pre.next; ListNode v2Node = v2Pre.next; ListNode temp = v2Pre.next.next; //v1,v2是否相邻 boolean b = (v1Node.next == v2Node); v1Pre.next = v2Pre.next; if (b) { v2Node.next = v1Node; } else { v1Pre.next.next = v1Node.next; v2Pre.next = v1Node; } v1Node.next = temp; break; } } newHead = newHead.next; } return result.next; }}
Last Update 2016.11.19
0 0
- 511.Swap Two Nodes in Linked List-交换链表当中两个节点(中等题)
- 2.swap-two-nodes-in-linked-list(交换链表中的两个结点)
- [LintCode] Swap Two Nodes in Linked List 交换链表中的两个结点
- Swap Two Nodes in Linked List
- LintCode:Swap Two Nodes in Linked List
- #511 Swap Two Nodes in Linked List
- Swap Two Nodes in Linked List
- [LintCode]Swap Two Nodes in Linked List
- Swap Two Nodes in Linked List
- LeetCode Swap Nodes in Pairs交换链表中的两个节点
- 451.Swap Nodes in Pairs-两两交换链表中的节点(容易题)
- Swap Nodes in Pairs 链表交换相邻的节点
- LeetCode24 Swap Nodes in Pairs 成对交换链表节点
- LeetCode 24 Swap Nodes in Pairs(交换序列中的结点)(Linked List)
- Swap Nodes in Pairs --成对交换链表节点(重重重)
- 24. Swap Nodes in Pairs(每两个相邻节点进行一次交换)
- Swap Nodes in Pairs(交换链表相邻的两个结点)
- LeetCode 24. Swap Nodes in Pairs(交换节点)
- (015)笑谈ViewPager
- JavaScript for循环中使用Ajax发送请求
- C#学习日记1
- 1006 Sign In and Sign Out
- 11G RAC 启动数据库 报错; ORA-00119 ORA-00132
- 511.Swap Two Nodes in Linked List-交换链表当中两个节点(中等题)
- linux下vnc远程桌面访问
- codeforces 50A . Domino piling
- 怎样配置让apache访问日志记录真实客户端IP,而不是nginx代理服务器IP
- opencv稠密矩阵基本概念
- Matlab与机器学习-- 数据的归一化
- 如何设置eclipse左边显示包结构及包的显示方式
- 如何教计算机认识手写数字(上)
- JVM-内存模型