题目
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。牛客网oj地址
样例
解题思路
这道题的解题思路挺多了,可以顺序把链表放入数组中然后再调用reverse函数反转一下返回;可以递归逆序将结果插入数组然后直接返回;可以翻转链表然后循环放入数组最后返回。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> result; while(head){ result.push_back(head->val); head=head->next; } reverse(result.begin(),result.end()); return result; } };
class Solution { private: vector<int> result; public: vector<int> printListFromTailToHead(ListNode* head) { if(head){ if(head->next){ printListFromTailToHead(head->next); } result.push_back(head->val); } return result; } };
class Solution { public: vector<int> printListFromTailToHead(RandomListNode* head) { unsigned long length=0; RandomListNode * pre= nullptr; while (head!= nullptr){ RandomListNode * temp=head; head=head->next; temp->next=pre; pre=temp; ++length; } vector<int> result(length); unsigned long index=0; head=pre; while (head!= nullptr){ result[index++]=head->label; head=head->next; } return result; } };
|