输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
解答思路 从大佬Jack Cui得到启发,python直接使用列表的插入方法,每次插入数据,只插入在首位。
python
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
result = []
while listNode:
result.insert(0, listNode.val) #list.insert(index, obj),index是插入位置,obj为插入的元素,要求是按链表值插入,所以使用.val
listNode = listNode.next
return result
java有点麻烦,首先先用链表接收所有数据,在接收时就可以选择顺序(addLast)还是逆序(addFirst),因为返回结果要以数组形式,再将链表中的数据都放入数组中,这里放数据的顺序要和上一步顺序相同,最后输出数组
import java.util.ArrayList;
import java.util.LinkedList;
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
LinkedList<Integer> stack = new LinkedList<Integer>();
while (head != null){
stack.addLast(head.val); //这里使用addfirst,下面就使用removefirst
head = head.next;
}
int[] res = new int[stack.size()];
for (int i = 0;i<res.length;i++){
res[i] = stack.removeLast();
}
return res;
}
}
网友评论