这道题连牛客网给的标签都是简单,一星,真的很简单,与其说知识点tag是链表,不如说是数组vector,我写代码全程只有十分钟,然后提交一次就ac了,第一次提交就通过了全部的测试的用例,虽然这道题简单,但还是有点小开心鸭
题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
要求:时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
解题思路
遍历链表,读取结点中的数据,放到数组中,因为是倒序打印,本来我想的是设置两个数组,一个先顺序存放从链表中读出来的数据,然后倒序存入另一个数组中在返回这个数组,但这道题的容器是vector,vector可以在任意位置插入数据,就非常简单了
从链表中顺序读取数据后,倒序插入到vector中,即将在链表中的后继元素放到vector的前一个位置,循环就可以实现啦
关于vector的一些使用方法
- vector容器类型的定义
vector<int> vector;,可以直接定义,不需要用new()方法 - vector在意位置插入数据 :
vector.insert(pos,elem);,将元素elem放入到pos位置上 - vector在头部插入元素:
vector.insert(vector.begin(),elem);,其中vector.begin()就是指向第一个元素的位置
虽然这是一道链表题,但我认为知识点在vector这里
源代码
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> vector;
if(head!=NULL){
ListNode* p=head;
while(p!=NULL){
vector.insert(vector.begin(),p->val);
p=p->next;
}
}
return vector;
}
};

本文介绍了一种简单而巧妙的方法,利用vector容器从尾到头逆序输出链表元素。通过实例演示了如何在遍历链表的同时,运用vector的insert方法在头部插入元素,从而实现链表数据的逆序存储与输出。这种方法不仅节省了额外数组的空间,还简化了代码实现。
790

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



