/*
剑指offer 06.从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
*/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
int n = 0;
ListNode* tmp = head;
while (tmp != nullptr) {
tmp = tmp->next;
n++;
}
tmp = head;
vector<int> ans(n);
while (n > 0) {
ans[n - 1] = tmp->val;
tmp = tmp->next;
n--;
}
return ans;
}
};
// 8 ms + 8.3 MB 时间复杂度太大。思路:第一次遍历链表算一下有几个数据,第二次遍历数组给数组赋值,因此一共只便利了两次链表。
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交