输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 一、需求 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 二、实现思路 1.定义一个类保存链表节点, 类 ListNode 2.输入一个链表,调用 inputLinkVal() 方法 3.将链表倒序添加到ArrayList集合中,调用printListFromTailToHead(ListNode listNode) 三、代码实现 /** * * * 输入一个链表... 阅读详情

题目描述:

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

解题:

方法一:

//反转列表实现
 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
         List<Integer> list = new ArrayList<Integer>();
        if (listNode == null) {
            return (ArrayList<Integer>) list;
        }
       
        if (listNode.next == null) {
            list.add(listNode.val);
            return (ArrayList<Integer>) list;
        }

        //列表反转
        ListNode pre = listNode; //当前反转节点的前一个节点
        ListNode cur = listNode.next; //当前反转节点
        ListNode temp; //还未翻转的第一个节点
        while (cur != null) {
            temp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = temp;
        }
       
        listNode.next=null;
        listNode=pre;
        //放入ArrayList中
        while (listNode != null) {
            list.add(listNode.val);
            listNode = listNode.next;
        }
        return (ArrayList<Integer>) list;
    }

方法二:

//递归实现
public class Solution {
    ArrayList<Integer> list = new ArrayList<Integer>(); //这个要是个全局变量
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {        
        if (listNode == null) {
            return  list;
        }

        if (listNode.next == null) {
            list.add(listNode.val);
            return  list;
        }
        
        if(listNode!=null){
            this.printListFromTailToHead(listNode.next);//这里加不加this都行
            list.add(listNode.val);
        }
        return list;        
    }   
}

方法三:

//栈实现  
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    ArrayList<Integer> list = new ArrayList<Integer>();
    Stack<Integer> stack=new Stack<Integer>();
    if (listNode == null) {
        return  list;
    }      

   if (listNode.next == null) {
       list.add(listNode.val);
       return  list;
   }
    
    while(listNode!=null){
        stack.push(listNode.val);
        listNode=listNode.next;
    }
    while(!stack.isEmpty()){
        list.add(stack.pop());
    }
    
    return list;        
}
机器人动力学仿真软件:Webots_(14).机器人声音仿真 Webots 中的声音仿真主要通过Sound和两种节点来实现。Sound节点用于播放预定义的音频文件,而节点则允许在仿真过程中动态生成和播放声音。这些节点可以用于模拟机器人的语音输出、报警声、环境噪音等。以下是一个示例,展示如何在控制器代码中播放预定义的声音。// 控制器代码(.c) # include <webots/robot.h> # include <webots/sound.h> # define TIME_STEP 64 const char * sound_name = "sound"; 阅读详情

相关推荐

A Mathematical Framework for Transformer Circuits—(二)

transformer数学理论框架

qq_42208244的博客 757

输入一个链表,按链表从尾到头的顺序返回一个ArrayList

方法很简单: 1.创建一个链表 2.把这个链表再反向输入到另一个链表就OK! 代码如下: import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ...

Mr_yuntuo的博客 332

P+F--r2000激光雷达slam技术实现

P+F--r2000激光雷达slam技术实现

majingming123的博客 1667

剑指offer:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

剑指offer算法题 链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 题目分析 思路一 利用栈的先入后出特性,利用一个栈来存储链表内的值,然后在添加到ArrayList中。 下面是JAVA算法实现: public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<>()

gaozhuang63的博客 266

C++开发基础之掌握常用的三种异步编程模型

以上是三种常见的C++异步编程模型,每种模型都有其适用的场景和特点。根据具体需求,你可以选择合适的模型来进行异步编程。

dotnet研习社 2175

告别Keil/IAR:在VSCode中用CMake+Clangd打造丝滑的STM32开发环境(附完整配置)

本文详细介绍了如何在VSCode中使用CMake和Clangd搭建高效的STM32开发环境,替代传统的Keil/IAR工具。通过完整的配置指南和快速开发技巧,帮助开发者实现轻量级、高度可定制的现代化开发流程,显著提升STM32项目的开发效率。

weixin_26843605的博客 164

【Java】输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

解题思路: 1,先构造一个链表 2,定义一个栈,将链表元素放入到栈中 3,利用栈的先进后出,实现从尾到头返回 4,取出栈的元素放入到ArrayList,然后遍历 实现代码如下: import java.util.ArrayList; /** *输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 * public class ListNode { * ...

JockLiu的博客 2753

STM32--LoRa通信模块

模块根据MD0的配置与AUX引脚的状态会进入不同的功能其中在通信功能下,包含4种工作模式。

qq_47258284的博客 1万+

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解法1234 解法1 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # 返回从尾部到头部的列表值序...

devcy的博客 1407

【实战解析】Ubuntu双网卡冲突:如何解决同一网段下网关无法访问及上网问题

本文深入解析Ubuntu服务器双网卡配置在同一网段时引发的路由冲突问题,导致网关无法ping通及无法上网。通过分析路由表与Metric值原理,提供使用route命令调整优先级及修改Netplan配置文件的实战解决方案,确保主次路由明确,一劳永逸解决网络冲突。

f9g0h的博客 280

RocketMQ5.3.0-control-多 Master 多 Salve-异步复制-集群搭建

RocketMQ5.3.0-control-多 Master 多 Salve-异步复制-集群搭建(详细文档)

m0_52369979的博客 728

java输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

/*题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 思路:1,构造一个链表 2,定义一个栈,将链表元素放入到栈中(利用栈的先进后出,实现从尾到头返回) 3,取出栈的元素放入到ArrayList,然后遍历 */ package com.kk.基础编程; import java.util.ArrayLi...

konzy的博客 1336

模组 RG500Q入网问题分析

- [ ] 不同于公网,在5G专网环境中, 通常使用很多非标准的网络配置,如PLMN/APN等。因此,5G模组在专网环境下通常要做一些专门的配置才能正常入网,本文分析一例在专网环境, 5G终端无法入网问题的定位过程。 - [ ] 具体涉及到以下模组操作: 恢复出厂、SA only、锁BAND、配置MBN等

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 935

牛客_输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 解题思路:创建两个ArrayList,一个用来根据传进来的ListNode参数新建一个完整的ArrayList,另一个用来存储反转后的ArrayList。 /** * public class ListNode { * int val; * ListNode next = null...

zhangvalue的博客 757

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

剑指Offer 从尾到头打印链表 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 解答 其实直接用ArrayList不创建LinkedList也能对,记得是LinkedList增删快一些,然而实际代码差别似乎不大(上面是LinkedList) /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.

北鹤M的代码手账 316

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JAVA输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

**输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。** //递归 方法 import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<...

抹茶饼的博客 322

3、输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 反向迭代器思路: /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ ...

weixin_44139400的博客 1404
上一篇: 作业十三
下一篇: 已知树的前序,中序遍历,重建二叉树
inferno devil
博客等级 码龄9年 54粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值