LintCode:交换链表当中两个节点
来源:互联网 发布:unity3d难学吗 编辑:程序博客网 时间:2024/06/05 10:09
一.题目描述
给你一个链表以及两个权值v1
和v2
,交换链表中权值为v1
和v2
的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。
注意事项
你需要交换两个节点而不是改变节点的权值
二.解题思路和代码
想到的方法并不好,等于是先将所有节点取出来,交换之后再重新整成一个链表,如果对时间和空间的要求更为严格的话,这个方法就不行了
* public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { /* * @param head: a ListNode * @param 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 hereif (head == null)return null;int i = -1;int j = -1;int index = 0;ArrayList<ListNode> array = new ArrayList<ListNode>();ListNode cursor = head;while (cursor != null) {array.add(cursor);if (cursor.val == v1) {i = index;}if (cursor.val == v2) {j = index;}cursor = cursor.next;index++;}if (i == -1 || j == -1)return head;ListNode temp = array.get(i);array.set(i, array.get(j));array.set(j, temp);int size = array.size();for (int k = 0; k < size - 1; k++) {array.get(k).next = array.get(k + 1);}array.get(size - 1).next = null;return array.get(0);}}
阅读全文
0 0
- LintCode 交换链表当中两个节点
- LintCode:交换链表当中两个节点
- LintCode-交换链表当中两个节点
- LintCode 交换链表当中两个节点
- LintCode:交换链表当中两个节点
- 交换链表当中两个节点-LintCode
- lintcode(511)交换链表当中两个节点
- LINTCODE——交换链表当中两个节点
- 交换链表当中两个节点
- 511- 交换链表当中两个节点
- Java实现-交换链表当中的两个节点
- 511.Swap Two Nodes in Linked List-交换链表当中两个节点(中等题)
- LintCode:两两交换链表中的节点
- LintCode 两两交换链表中的节点
- 两两交换链表中的节点-LintCode
- Lintcode 451.两两交换链表中的节点
- lintcode——两两交换链表中的节点
- LintCode-两两交换链表中的节点
- Xilinx火龙果学习笔记(4)---从SD卡启动
- Ubuntu14.04下安装gcc5.4.0(亲自安装)
- python写的通讯录
- CF 408C Triangle 勾股数+简单几何
- 与HDFS命令交互时如何指定文件和目录确切位置的URI
- LintCode:交换链表当中两个节点
- mac/linux中配置ssh的ip别名访问
- [简单题]Who_like_it? Python实现
- es6和es5中的this指向
- PHOTOSHOP常用快捷键
- Java常见考题(下)
- codevs 1324 昂贵的聘礼
- SuperParent算法-一种半朴素贝叶斯网络算法
- Selenium自动测试工具-WebDriver