zoukankan      html  css  js  c++  java
  • LeetCode

    题目:

    Given a linked list, swap every two adjacent nodes and return its head.
    For example,
    Given 1->2->3->4, you should return the list as 2->1->4->3.
    Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

    思路:

    保持三个指针,往前推进,不断变换

    package list;
    
    public class SwapNodesInPairs {
    
        public ListNode swapPairs(ListNode head) {
            ListNode x = new ListNode(0);
            x.next = head;
            ListNode y = head;
            ListNode z = null;
    
            ListNode first = x;
            
            while (y != null && y.next != null) {
                z = y.next;
                ListNode tmp = z.next;
                x.next = z;
                z.next = y;
                y.next = tmp;
                
                x = y;
                y = tmp;
            }
            
            return first.next; 
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            ListNode a1 = new ListNode(1);
            ListNode a2 = new ListNode(2);
            ListNode a3 = new ListNode(3);
            ListNode a4 = new ListNode(4);
            ListNode a5 = new ListNode(5);
            a1.next = a2;
            a2.next = a3;
            a3.next = a4;
            a4.next = a5;
            a5.next = null;
            
            SwapNodesInPairs s = new SwapNodesInPairs();        
            ListNode x = s.swapPairs(a1);
            while (x != null) {
                System.out.println(x.val);
                x = x.next;
            }
        }
    
    }
  • 相关阅读:
    剑指offer系列0:替换空格&从头到尾打印链表
    算法1:动态规划
    设计模式2:策略模式
    NPOI导出xls、xlsx和csv
    EF6
    oracle导出数据字典
    oracle分组函数
    oracle分析函数中的开窗函数
    Oracle 列转行&行转列
    Oracle基本函数总结
  • 原文地址:https://www.cnblogs.com/null00/p/5062369.html
Copyright © 2011-2022 走看看