1. 程式人生 > >劍指offer——替換空格從尾到頭列印連結串列

劍指offer——替換空格從尾到頭列印連結串列

題目描述

輸入一個連結串列,按連結串列值從尾到頭的順序返回一個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;
    }
};