標籤:subject offer ext 一個 替換空格 cto 方法 bsp while
題目描述輸入一個鏈表,按鏈表值從尾到頭的順序返回一個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(); } return result; } };
方法三:兩個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——替換空格從尾到頭列印鏈表