• 两两交换链表中的节点(leetcode24)


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

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

    示例:

    输入:head = [1,2,3,4]
    输出:[2,1,4,3]

    解析:

    方法一:递归

    public class leetcode24 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            ListNode item4 = new ListNode(4);
            ListNode item3 = new ListNode(3,item4);
            ListNode item2 = new ListNode(2,item3);
            ListNode item1 = new ListNode(1,item2);
            
            ListNode ans = swapPairs(item1);
            ans.printNode(ans);
        }
        
        /**
         * 递归
         * 
         * @param head
         * @return
         */
        public static ListNode swapPairs(ListNode head)
        {
            if(head==null||head.next==null){
                return head;
            }
            ListNode newHead = head.next;
            head.next = swapPairs(newHead.next);
            newHead.next = head;
            
            return newHead;
        }
    
    }

    方法二:迭代

        /**
         * 迭代
         * @param head
         * @return
         */
        public static ListNode swapPairs1(ListNode head){
            ListNode dummyHead = new ListNode(0);
            dummyHead.next = head;
            ListNode temp = dummyHead;
            
            while(temp.next!=null&&temp.next.next!=null){
                ListNode node1 = temp.next;
                ListNode node2 = temp.next.next;
                temp.next = node2;
                node1.next = node2.next;
                node2.next = node1;
                temp = node1;//因为此时node1连接后面的节点
            }
            return dummyHead.next;
        }
  • 相关阅读:
    python学习总结
    内存池设计与实现
    RFC太网接口类型定义
    linux下查看网卡速率
    linux 下的clock_gettime() 获取时间函数
    添加linux系统调用的两种方式
    内核态与用户态通信 之 sockopt
    linux进程间通信方式
    linux进程间通信同步-共享内存
    Linux忘记密码常用的几种解决方法
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/14502477.html
Copyright © 2020-2023  润新知