#yyds干货盘点#剑指 Offer 06. 从尾到头打印链表

网友投稿 213 2022-11-22

#yyds干货盘点#剑指 Offer 06. 从尾到头打印链表

题目

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2] 输出:[2,3,1]

限制:

0 <= 链表长度 <= 10000

我的答案

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public int[] reversePrint(ListNode head) { //创建一个动态的数组 ArrayList a = new ArrayList<>(); //遍历链表,并且记录到a这个动态数组中 ListNode node =head; while(node!=null){ a.add(node.val); node=node.next; } int temp; //逆置动态数组 for(int i=0,j=a.size()-1;i<(a.size())/2;i++,j--){ temp=a.get(i); a.set(i,a.get(j)); a.set(j,temp); } //创建int[],用于返回参数 int[] d = new int[a.size()]; for(int i = 0;i

优质答案

// 执行用时 : 0 ms, 在所有 Java 提交中击败了 100.00% 的用户 // 内存消耗 : 39.8 MB, 在所有 Java 提交中击败了 100.00% 的用户 // 不使用栈,不使用递归

class Solution { public static int[] reversePrint(ListNode head) { ListNode node = head; int count = 0; while (node != null) { ++count; node = node.next; } int[] nums = new int[count]; node = head; for (int i = count - 1; i >= 0; --i) { nums[i] = node.val; node = node.next; } return nums; } }

回顾一下ArrayList

方法 返回值 说明
add(int index, E element) void 在列表的指定位置插入指定元素(可选操作)
addAll(int index, Collection<? extends E> c) boolean 将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)
get(int index) E 返回列表中指定位置的元素
indexOf(Object o) int 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1
lastIndexOf(Object o) int 返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1
listIterator() ListIterator 返回此列表元素的列表迭代器(按适当顺序)
listIterator(int index) ListIterator 返回此列表元素的列表迭代器(按适当顺序),从列表的指定位置开始
remove(int index) E 移除列表中指定位置的元素(可选操作)
set(int index, E element) E 用指定元素替换列表中指定位置的元素(可选操作)
subList(int fromIndex, int toIndex) List 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:超越安全气囊应用的简单总线接口
下一篇:java.util.Collections类—emptyList()方法的使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~