描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
链表: 1->2 ->3
返回: [3 2 1]
代码: 5ms 896kb
#include <algorithm> #include <list> #include <vector> class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { if(!head)return {}; ListNode* p = head; int len = 0; while (p!=nullptr) { p = p->next; len++; } vector<int> res(len); for(int i = len - 1;i>=0;--i){ res[i] = head->val; head = head->next; } return res; } };
总结
题目很简单,直接用vector顺序存储数据后再用算法反转一下也可以,但是这样做比较耗时,所以可以先创建一个链表副本遍历出链表节点数量,再定义对于长度容器反向遍历赋值即可。