zoukankan      html  css  js  c++  java
  • 24.Swap Nodes in Pairs <两两交换链表>

    题目链接:https://leetcode.com/problems/swap-nodes-in-pairs/

    解题思路:

    这个题目比较复杂,我用本子写上去便于理解。

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode swapPairs(ListNode head) {
            
    
    //若头结点为空,或链表只有一个节点,则返回head本身
            if(head==null || head.next==null) return head;
            //若链表有两个及以上的节点时,关键在于修改两两节点间的next指针关系
            ListNode newHead = new ListNode(0); //辅助节点
            newHead.next = head;
            ListNode p1 = newHead;
            while(p1.next!=null && p1.next.next!=null) {
                //将辅助节点与要交换的两节点,在稿纸上画出每一步的指针改变时的断开与指向关系,可得下面的逻辑
                ListNode temp1 = p1.next;
                ListNode temp2 = temp1.next;
                
                p1.next = p1.next.next;//这一步让p1指向temp2,链表指向要3个,不然就会断了
                temp1.next = temp2.next;
                temp2.next = temp1;
                
                //交换完毕后,辅助节点向后走两位
                p1 = p1.next.next;
            }
            return newHead.next;
            
        }
    }
  • 相关阅读:
    HDU 2757 Ocean Currents
    HDU 2704 Bulletin Board
    HDU 2234 无题I
    HDU 3638 Go , SuSu
    HDU 1199 Color the Ball
    HDU 1430 魔板
    PL/SQL例外的介绍
    表分区介绍
    移动表空间数据文件
    long\lob\bfile类型介绍
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10830585.html
Copyright © 2011-2022 走看看