题目描述

输入一个链表,按链表从尾到头的顺序返回一个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;
    }
};

Last modification:August 10th, 2020 at 03:00 pm