题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
思路
思路一: 遍历链表,并将链表每个节点值按遍历顺序压入ArrayList,最后翻转ArrayList,时间复杂度$O(n)$
思路二: 遍历链表,并将链表每个节点值依次也入栈中,最后遍历栈中元素,按出栈顺序压入ArrayList
Code
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :val(x), next(NULL) {}
};
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
stack<int>st;
ListNode *p=head;
while(p!=NULL){
st.push(p->val);
p=p->next;
}
vector<int>ArrayList;
while(!st.empty())ArrayList.push_back(st.top()),st.pop();
return ArrayList;
}
};