中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【劍指Offer第三題】從尾到頭打印鏈表

發布時間:2020-07-26 21:58:11 來源:網絡 閱讀:126 作者:Yuanmes 欄目:編程語言

題目描述
輸入一個鏈表,按鏈表從尾到頭的順序返回一個ArrayList。

注:設鏈表長度為n。語言:C++


鏈表結點數據結構規定如下:

*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };

解法1:正向遍歷,借助反向迭代器實現序列逆置(C++特性)。

vector<int> printListFromTailToHead(ListNode* head) {
        ListNode *p;
        p = head;
        vector<int> array;
        while(p != NULL)
        {
            array.push_back(p->val);
            p = p->next;
        }
        return vector<int>(array.rbegin(), array.rend());
    }

時間復雜度:O(n),空間復雜度:O(1)


解法2:借助棧先進后出的特性,將鏈表結點先入棧后出棧,再壓入序列中。

vector<int> printListFromTailToHead(ListNode* head) {
        ListNode *p;
        p = head;
        stack<int> s;
        while(p != NULL)
        {
            s.push(p->val);
            p = p->next;
        }
        p = head;
        vector<int> array;
        while(p != NULL)
        {
            array.push_back(s.top());
            s.pop();
            p = p->next;
        }
        return array;
    }

時間復雜度:O(n),空間復雜度:O(n)


解法3:遞歸

    vector<int> array;
    vector<int> printListFromTailToHead(ListNode* head) {
        ListNode *p;
        p = head;
        if(head != NULL)
        {
            if(head->next != NULL)
                printListFromTailToHead(head->next);
            array.push_back(head->val);
        }
        return array;
    }

時間復雜度:O(n),空間復雜度:O(n)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仲巴县| 彭阳县| 探索| 台南市| 连城县| 曲阜市| 巧家县| 柘城县| 菏泽市| 饶河县| 贺兰县| 广水市| 高碑店市| 元江| 英山县| 德州市| 皋兰县| 旬邑县| 阿拉善盟| 大兴区| 澄城县| 沙田区| 收藏| 邵阳县| 清镇市| 龙里县| 右玉县| 铜鼓县| 庐江县| 巢湖市| 靖州| 神木县| 通山县| 泗阳县| 正定县| 札达县| 开封县| 石景山区| 布拖县| 通州市| 成安县|