1. 程式人生 > >列印連結串列(學習遞迴思想)——牛客

列印連結串列(學習遞迴思想)——牛客

題目描述

輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。

問題分析

注意從尾到頭,這個很符合棧的特性——FILO,考慮用棧。既然想到用棧的形式,可以聯想到遞迴方法,最終確定為遞迴解決本題。

程式碼實現

  1. 直接使用當前函式
class Solution {
public:
  vector<int> dev;
  vector<int>& printListFromTailToHead(struct ListNode* head) {
    if(head!=NULL) {
      if
(head->next!=NULL) { dev=printListFromTailToHead(head->next); } dev.push_back(head->val); } return dev; } };

在這裡插入圖片描述

呼叫函式實現(會消耗額外記憶體資源)

class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> a;
push(head,&a); return a; } void push(ListNode* head,vector<int> *a) { if(head==NULL) return; if(head!=NULL) { push(head->next,a); } a->push_back(head->val); } };

在這裡插入圖片描述