如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里
1.题目
题目链接:传送门(点我)
2.题解
2.1非递归解法
利用ArrayList中的add方法,可将元素添加到指定位置。在顺序遍历链表的过程中把元素不断的插入到起始位置。
//ArrayList的add方法
public void add(int index, E element) {
rangeCheckForAdd(index);
ensureCapacityInternal(size + 1); // Increments modCount!!
System.arraycopy(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}
//AC代码
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<>();
ListNode p = listNode;
while(p!=null){
list.add(0,p.val);
p=p.next;
}
return list;
}
}
2.1递归解法
由于是从尾到头,很容易想到具有先进后出特点的栈,而函数调用时也是使用的函数调用栈,由此写出递归代码。
//AC代码
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> list = new ArrayList();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
printListFromTailToHead(listNode.next);
list.add(listNode.val);
}
return list;
}
}