剑指offer 第三题
牛客网测试算法
算法思路:
使用一个倒序for循环放置链表中的元素
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
ListNode *p = head;
int len = 0;
if (head == NULL) { //排除输出空链表情况
return {};
}
while (p) { // 获取链表长度,方便后续申请空间
p = p->next; // 因为这是自定义的链表所以没有直接获取链表长度的函数
len++;
}
vector<int> nums(len); // 申请与链表相同长度的空间,则可按照索引放置元素
p = head; // 回到链表开头
for (int i = len -1; i >= 0; i--){
nums[i] = p->val; // 将链表的元素,按照索引放置对应位置
p = p->next;
}
return nums;
}
};