• 微软算法100题24 就地逆序单链表


    第24 题:
    链表操作,
    单链表就地逆置

    思路: 本来想拿两个指针分别指向当前节点和上一节点,在向后移动指针的过程中将当前节点的next指针逆向为上一节点,但这样就无法继续向后移动当前节点了。。。。

    转换一下思路,对于n各节点,逆序的操作可以分解为把后面n-1个节点逆序,然后再把第一个节点放在已经逆序好的n-1个元素后面就可以了 -> f(n) = [f(n-1), 1] 最后还是回到了递归上。。。

    其实递归是不是也可以归于divide&conquer范畴呢?

     1 package com.rui.microsoft;
     2 
     3 public class Test24_ReverseLinkList {
     4 
     5     public static void main(String[] args) {
     6         Node node1 = new Node(1);
     7         Node node2 = new Node(2);
     8         node1.next = node2;
     9         Node node3 = new Node(3);
    10         node2.next = node3;
    11         Node node4 = new Node(4);
    12         node3.next = node4;
    13         Node node5 = new Node(5);
    14         node4.next = node5;
    15         
    16         Node last = reverse(node1);
    17         System.out.println("Last Node: " + last.value);
    18         System.out.print("New Order:");
    19         while(null != node5){
    20             System.out.print(" " + node5.value);
    21             node5 = node5.next;
    22         }
    23     }
    24     
    25     public static Node reverse(Node head){
    26         if(null == head) return null;
    27         if(null == head.next) return head;
    28         Node last = reverse(head.next);
    29         last.next = head;
    30         head.next = null;
    31         return head;
    32     }
    33     
    34     static class Node{
    35         int value;
    36         Node next;
    37         public Node(int value){
    38             this.value = value;
    39         }
    40     }
    41 }
  • 相关阅读:
    常用SQL语句大全总结
    修改 Mac 默认 PHP 运行环境
    mac下更新自带的PHP版本到5.6或7.0
    apache php 开启伪静态
    酒店迎接新技术变革:用智能手机开门
    百度地图显示多个标注点
    百度地图api简单使用方法
    Spring mvc 配置详解
    Spring MVC入门知识总结
    Bootstrap 按钮
  • 原文地址:https://www.cnblogs.com/aalex/p/4910556.html
Copyright © 2020-2023  润新知