zoukankan      html  css  js  c++  java
  • leetcode_24. 两两交换链表中的节点

    24. 两两交换链表中的节点

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    示例:

    给定 1->2->3->4, 你应该返回 2->1->4->3.

    解题:

    public class ListNode {
        int val;
        ListNode next;
    
        ListNode(int x) {
            val = x;
        }
    }
    
    class Solution {
        public ListNode swapPairs(ListNode head) {
            // 递归
    //        if (head == null || head.next == null) {
    //            return head;
    //        }
    //        ListNode next = head.next;
    //        head.next = swapPairs(next.next);
    //        next.next = head;
    //        return next;
        // 非递归
            ListNode pre = new ListNode(0);
            pre.next = head;
            ListNode temp = pre;
            while(temp.next != null && temp.next.next != null) {
             // 1
                ListNode start=tmp.next;
                // 2
                ListNode end=tmp.next.next;
                // 0->2
                tmp.next=end;
                // 1>3>4
                start.next=end.next;
                // 2>1>3>4
                end.next=start;
                // 1>3>4
                tmp=start;
            }
            return pre.next;
    
    //
    //        作者:guanpengchn
    //        链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/hua-jie-suan-fa-24-liang-liang-jiao-huan-lian-biao/
    //        来源:力扣(LeetCode)
    //        著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
        }
    
        public static void main(String[] args) {
            ListNode node1 = new ListNode(1);
            ListNode node2 = new ListNode(2);
            ListNode node3 = new ListNode(3);
            ListNode node4 = new ListNode(4);
            node1.next = node2;
            node2.next = node3;
            node3.next = node4;
            ListNode listNode = new Solution().swapPairs(node1);
            while (listNode!=null){
             System.out.print(listNode.val+" -> ");
             listNode=listNode.next;
            }
        }
    }

    参考:图解算法

  • 相关阅读:
    圆珠笔芯为什么那么细
    2017第45周二
    浅谈XXE攻击
    谈谈ssrf
    htop简介
    关闭火狐定期向“http://detectportal.firefox.com/”发包
    linux登录用户(终端)间的通信
    linux下ftp、telnet的安装和使用
    深入解析hostname
    supervisor启动sqlmapapi失败 sqlmapapi: ERROR (file is not executable)
  • 原文地址:https://www.cnblogs.com/liran123/p/13129700.html
Copyright © 2011-2022 走看看