1.题目:

2.解题思路:
2.1反转数组的思想
题目要求,用数组返回。那就创建一个数组,将链表中从头到尾每个节点的数据,依次赋给该数组,然后将整个数组反转,即得到一个从尾到头的数组,然后返回该数组即可;这里用到了一个常用的STL的库函数reverse,reverse没有返回值,其具体使用方式和代码如下:
class Solution {
public:
vector<int> reversePrint(ListNode* head)
{
vector<int> arr;
while(head)
{
arr.push_back(head->val);
head=head->next;
}
reverse(arr.begin(), arr.end());
return arr;
}
};
2.2用栈的思想
用栈的思想,先进后出,依次将链表中的数据压栈后,再依次出栈至建立好的数组当中,刚好得到一个与之前顺序相反的数组,具体代码如下:
class Solution {
public:
vector<int> reversePrint(ListNode* head)
{
vector<int> arr;
stack<int> s;
//入栈
while(head)
{
s.push(head->val);
head=head->next;
}
//出栈
while(!s.empty())
{
arr.push_back(s.top());
s.pop();
}
return arr;
}
};
这篇博客探讨了两种解决链表翻转问题的方法,一是通过反转数组,利用STL库函数`reverse`实现;二是借助栈的先进后出特性,先将链表元素压栈,再依次出栈至数组。这两种方法都有效地实现了链表数据的逆序输出。
&spm=1001.2101.3001.5002&articleId=126355461&d=1&t=3&u=18b7fb3b997348da87db004964922a59)
308

被折叠的 条评论
为什么被折叠?



