大厂常见算法50题-图书整理(从头到尾打印链表)

2024-05-04 18:04

本文主要是介绍大厂常见算法50题-图书整理(从头到尾打印链表),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

请添加图片描述

专栏持续更新50道算法题,都是大厂高频算法题,建议关注, 一起巧‘背’算法!

文章目录

  • 题目
  • 解法一 递归 + 辅助栈
  • 解法二 辅助栈
  • 总结

题目

题目地址
image.png

解法一 递归 + 辅助栈

  1. 根据头节点(对象)的next节点属性可以得到所有的节点
  2. 通过递归将数据都放到辅助栈中,递归出口是节点为null
  3. 初始化一个int[]数组,将栈中的元素弹出并放入数组
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {// 声明一个栈static Stack<ListNode> stack = new Stack<ListNode>();public int[] reversePrint(ListNode head) {// 将数据压如栈中recurrence(head);int size = stack.size();System.out.println(size);// 声明返回的数组int[] result = new int[size];// 遍历栈,弹出for (int i = 0; i < size; i++) {result[i] = stack.pop().val;}return result;}public static void recurrence(ListNode node){if(node != null){stack.push(node);recurrence(node.next);}}
}

解法二 辅助栈

  1. 根据头节点(对象)的next节点属性可以得到所有的节点
  2. 将节点中所有的值放入辅助栈中(栈先进后出
  3. 初始化一个int[]数组,将栈中的元素弹出并放入数组
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public int[] reversePrint(ListNode head) {// 声明一个栈Stack<ListNode> stack = new Stack<ListNode>();// 将数据压如栈中ListNode temp = head;while (temp != null) {stack.push(temp);temp = temp.next;}int size = stack.size();// 声明返回的数组int[] result = new int[size];// 遍历栈,弹出for (int i = 0; i < size; i++) {result[i] = stack.pop().val;}return result;}
}

image.png

总结

这道题作为链表类型的入门题目是非常适合的,推荐没刷过算法的,链表从这道题开始。新手需要注意的是这里的Node是个对象,对象里有一个Node属性代表的是它的下一个节点,实在理解不了的你就把入参看成一个链表。
请添加图片描述

这篇关于大厂常见算法50题-图书整理(从头到尾打印链表)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959790

相关文章

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数