511.Swap Two Nodes in Linked List-交换链表当中两个节点(中等题)

来源:互联网 发布:按键精灵抓取网页数据 编辑:程序博客网 时间:2024/05/22 07:02

交换链表当中两个节点

  1. 题目

    给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。

    注意事项
    你需要交换两个节点而不是改变节点的权值

  2. 样例

    给出链表 1->2->3->4->null ,以及 v1 = 2 , v2 = 4
    返回结果 1->4->3->2->null。

  3. 题解

    基本的链表题,需注意两个节点相邻的问题。

/** * 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
原创粉丝点击