反转单向链表(JAVA)

在微博看到,有人说8个应届毕业生没有人写出o(1)空间复杂度,o(n)时间复杂度的反转单向链表。

(不是我自己想的)

public void reverseList(ListNode head)
{
    ListNode newHead = null;
    while(head != null)
    {
        ListNode next = head.next;
        head.next = newHead;
        newHead = head;
        head = next;
    }
    return newHead;
}

自己也想了很久,类似于:

  Head -> a ->b

  1.next = a

  Head ->null

  newHead =head

  Head =a

  2.next  = b

  a -> head

  newHead = a

  Head = b

  3.next = null

  b -> a

  newHead = b

  Head = null

  return newHead

  

时间: 2024-08-11 18:17:31

反转单向链表(JAVA)的相关文章

[算法]反转单向链表和双向链表

题目: 分别实现反转单向链表和双向链表的函数. 要求: 如果链表长度为N,时间复杂度为O(N),额外空间复杂度要求为O(1). 程序: 反转单向链表: public class Node{ public Node(int data){ this.value=data; } public int value; public Node next; } public static Node reverseList(Node node){ Node pre=null; Node next=null; w

C语言反转单向链表的代码

学习过程中中,把内容过程中常用的内容片段做个珍藏,下边内容段是关于C语言反转单向链表的内容,应该能对大伙有较大用处. #include "stdafx.h" enum{N = 3};class Node{public:int var;Node(int i):pNext(NULL), var(i){}}; {if(pHead->pNext->pNext != NULL)helper(pHead->pNext, reverseHead);elsereverseHead =

单向链表JAVA代码

//单向链表类 publicclassLinkList{       //结点类     publicclassNode{         publicObject data;         publicNode next;           publicNode(Object obj,Node next){             this.data = obj;             this.next = next;         }     }       Node head; 

Reverse Linked List(反转单向链表)

来源:https://leetcode.com/problems/reverse-linked-list Reverse a singly linked list. 递归方法:递归调用直到最后一个节点再开始反转,注意保存反转后的头结点返回 Java 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x)

反转单向链表

思路一:定义三个节点分别为当前节点cur,前一个节点pre,后一个节点next 我们需要当前节点由指向next转变为指向pre,并且我们必须先将下一个节点缓存起来否则改变了当前节点的指向 我们无法继续遍历整个链表了. 即步骤如下 1 缓存当前节点的下一个节点 next=cur.next; 2 将当前节点指向前一个节点 cur.next=pre; 3 前一个节点后移一位,指向当前节点:pre=cur; 4 当前节点后移一位 cur=next: public ListNode ReverseList

java 单向链表

简单单向链表 [java] view plaincopyprint? class Node{ private String data; //存储当前节点内容 private Node   next=null; //存储下一下节点 public Node(String data){ this.setDate(data); } public void setDate(String data){ this.data = data; } public void setNext(Node next){ t

php 单向链表反转 reverse (没有空的头结点)

* 参照php标准库设计接口 http://php.net/manual/en/class.spldoublylinkedlist.php * 反转单向链表 reverse方法, 其他的方法为了方便测试 <?php /** * Created by PhpStorm. * User: Mch * Date: 8/11/18 * Time: 00:25 */ class Node { public $value; public $next; public function __construct(

复习下C 链表操作(单向链表)

Object-C 作为C 的包装语言(运行时.消息机制).如果不熟悉C 的话实在玩得太肤浅. 随便深入oc 内部都会接触到C. runtime .GCD.Block.消息机制... 所有强大的功能无不用的 包装体(struct 结构体).使用GCC/Clang (可以google 下.Clang 比GCC 更优化,) 编译指令. 转换OC 为 C . 终端 使用Clang 命令参考 clang -rewrite-objc file.m 查看file.cpp 文件为编译转换的C 单向链表 创建 .

反转单链表和双链表

Problem: 反转单向和双向链表 [题目] 分别实现反转单向链表和反转双向链表的函数. [要求] 如果链表长度为N,时间复杂度要求为O(N),额外空间 复杂度要求为O(1) Solution: 学会使用指针 Code: 1 #pragma once 2 3 #include <iostream> 4 5 using namespace std; 6 7 struct Node 8 { 9 int val; 10 Node* next; 11 Node(int a = 0) :val(a),