劍指offer——替換空格從尾到頭打印鏈表
阿新 • • 發佈:2018-11-03
null val tail 題目 nbsp ++ 插入 for col
題目描述
輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。 方法一:使用vector的insert函數可以在任意位置插入的特性。/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> result; while(head != NULL) { result.insert(result.begin(),head->val); head = head->next; } return result; } };
方法二:使用堆
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> result; stack<int> arr; ListNode* p=head; while(p!=NULL) { arr.push(p->val); p=p->next; } int len=arr.size(); for(int i=0;i<len;i++) { result.push_back(arr.top()); arr.pop(); } returnresult; } };
方法三:兩個vector,倒著取元素
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> array; vector<int> array2; ListNode* p; p=head; while(p!=NULL) { array.push_back(p->val); p=p->next; } for(int i=0;i<array.size();i++) { array2.push_back(array[array.size()-i-1]); } return array2; } };
劍指offer——替換空格從尾到頭打印鏈表