• 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; 
        }
    }
  • 相关阅读:
    ubuntu nginx 伪静态 设置
    ubuntu thinkphp pathinfo 404等问题
    ubuntu svn安装测试
    ubuntu zendDebugger.so 加载不上的问题
    ubuntu ssh安装
    nyoj-660-逃离地球
    nyoj-643-发短信
    nyoj-181-小明的难题
    nyoj-663-弟弟的作业
    nyoj-682-初学者的烦恼
  • 原文地址:https://www.cnblogs.com/skillking/p/9420220.html
Copyright © 2020-2023  润新知