题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
1.使用栈:
将原先的链表压入栈,然后从栈返回给value容器.
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> value; stack<int> sta; while(head!=NULL){ sta.push(head->val); head=head->next; } while(!sta.empty()){ value.push_back(sta.top()); sta.pop(); } return value; } };
2.使用递归
递归(归的时候),返回数值给value,然后进入容器。
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> value; if(head!=NULL){ if(head->next!=NULL){ value=printListFromTailToHead(head->next); } value.push_back(head->val); } return value; } };
3.反向迭代器( rbegin() 和rend() )
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> value; while(head!=NULL){ value.push_back(head->val); head=head->next; } return vector<int>(value.rbegin(),value.rend()); } };
c.begin() 返回一个迭代器,它指向容器c的第一个元素
c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置
c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素
c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置