• 剑指offer


    题目描述:

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

    结点定义:

    class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }

    code:

    1. 使用头插法:

    import java.util.ArrayList;
    
    public class Solution {
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            //如果链表为空,返回空list
            if (null == listNode) {
                return new ArrayList<>();
            }
            //定义一个新链表的头节点
            ListNode head = new ListNode(0);
            //遍历链表
            while (null != listNode) {
                //定义新节点
                ListNode temp = new ListNode(listNode.val);
                //新节点的next指向head的next
                temp.next = head.next;
                //head的next指向新节点
                head.next = temp;
                //原链表指向下一个
                listNode = listNode.next;
            }
            //头节点指向下一个
            head = head.next;
            //定义list作为返回值
            ArrayList<Integer> list = new ArrayList<>();
            //遍历链表
            while (null != head) {
                //list添加当前节点的值
                list.add(head.val);
                //链表指向下一个
                head = head.next;
            }
            //返回list
            return list;
        }
    }

    2. 使用list中方法:

    import java.util.ArrayList;
    
    public class Solution {
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            //如果链表为空,返回空list
            if (null == listNode) {
                return new ArrayList<>();
            }
            ArrayList<Integer> list = new ArrayList<>();
            //遍历链表
            while (null != listNode) {
                //list第一个位置添加当前节点的值
                list.add(0, listNode.val);
                //链表指向下一个
                listNode = listNode.next;
            }
            //返回list
            return list;
        }
    }
  • 相关阅读:
    python eval() 进行条件匹配
    spring boot 学习
    JAVA基础
    在mac上进行JAVA开发
    移动端开发基础【8】页面生命周期
    数据挖掘【1】概述(引言)
    项目管理【26】 | 项目成本管理-规划成本管理
    项目管理【24】 | 项目进度管理-控制进度
    项目管理【25】 | 项目成本管理-成本管理概念
    操作系统【8】 Linux虚拟内存和物理内存
  • 原文地址:https://www.cnblogs.com/s-star/p/12483175.html
Copyright © 2020-2023  润新知