zoukankan      html  css  js  c++  java
  • 24. Swap Nodes in Pairs

    一、题目

      1、审题

        

      2、分析:

        依次交换相邻两个结点,其中每个结点只交换一次。

    二、解答

      1、思路:

        方法一:直接交换两个结点,其中交换方式为先删除结点 n 后一个结点,再将删除的结点在 n 结点之前插入。

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode swapPairs(ListNode head) {
    
            ListNode pre = new ListNode(0);
            ListNode dummy = head;
            ListNode pig = pre;
            pre.next = dummy;
    
            while(dummy != null && dummy.next != null) {
    
                ListNode next = dummy.next;
                dummy.next = next.next; // 删除
    
                pre.next = next;        // 插入
                next.next = dummy;
    
                pre = dummy;
                dummy = dummy.next;
    
            }
    
            return pig.next;
        }
    }

      方法二: 直接交换两个相邻结点的值,而不用交换结点。

      

    public class Solution {
        public ListNode swapPairs(ListNode head) {
            ListNode resultHead = head;
            int tempVal;
            while(head != null && head.next != null) {
                // swap
                tempVal = head.next.val;
                head.next.val = head.val;
                head.val = tempVal;
                
                // 
                head = head.next.next;
            }
            return resultHead; 
        }
    }
  • 相关阅读:
    [SHOI2008]堵塞的交通
    [SHOI2008]汉诺塔
    [JSOI2008]最小生成树计数
    [JSOI2008]球形空间产生器
    [HNOI2014]画框
    HDU 2255 奔小康赚大钱
    [SDOI2017]新生舞会
    [BZOJ2285][SDOI2011]保密
    [BZOJ3232]圈地游戏
    [HDU5909]Tree Cutting
  • 原文地址:https://www.cnblogs.com/skillking/p/9420220.html
Copyright © 2011-2022 走看看