力扣题目
剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
输入:head = [1,3,2]
输出:[2,3,1]
笔者现在在二刷剑指offer,从一到很简单的题目中又收获到了很多知识点。
笔者一直以来对toarry()方法使用得不好、总忘记其限制。
先放两种toarry()的方法:
arraylist转换整型数组问题
Object[] toArray()
以适当的顺序(从第一个元素到最后一个元素)
返回包含此列表中所有元素的数组。
<T> T[] toArray(T[] a)
以适当的顺序返回包含此列表中所有元素的数组(从第一个元素到最后一个元素);
返回数组的运行时类型是指定数组的运行时类型。
因此如果不做限制直接return arr.toArray();得到的肯定是Object类型的数组是会报错的,若用第二种方法泛型又只能是得到Integer数组,依旧会报错。
return arr.toArray(new Integer[arr.size()]);不能得到我需要的整型数组,因此只能循环赋值。如果不想循环赋值可以用stram中的办法,笔者能力有限无法介绍。
当然了其实这个点和这道题关系不大,并不需要转换的,仅仅是我走了弯路恰好又碰到了这个总是遗忘的知识点。
栈的size问题
在这题目中,将辅助栈s中的数字循环取出放入整型数组的判断条件中有的人可能会和读者犯同样的错误:判断条件写为了 i < stack.size(),如此的话每一次判断条件都会变化,因为执行体中用到了stack.pop();
希望大家能注意这个细节。