输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
//想法一:呆瓜思维,想到了reverse函数
vector<int> ans;
ListNode* temp = head;
while(temp!=NULL){
ans.push_back(temp->val);
temp=temp->next;
}
reverse(ans.begin(),ans.end());
return ans;
}
};
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
//想法二:利用一个栈
//一般想到这种反向,就考虑栈
vector<int> ans;
stack<int> temp;
while(head!=NULL){
temp.push(head->val);
head=head->next;
}
while(!temp.empty()){
ans.push_back(temp.top());
temp.pop();
}
return ans;
}
};
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
//想法三:反转链表,再存储
ListNode* myhead = NULL;
vector<int> ans;
while(head!=NULL){
ListNode* p = new ListNode(head->val);
p->next=myhead;
myhead=p;
head=head->next;
}
while(myhead!=NULL){
ans.push_back(myhead->val);
myhead=myhead->next;
}
return ans;
}
};