zoukankan      html  css  js  c++  java
  • 面试题6:从尾到头打印链表

    输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

    1.基于循环的栈

    提交时间:2018-07-11 语言:C++ 运行时间: 5 ms 占用内存:476K 状态:答案正确

    /**
    *  struct ListNode {
    *        int val;
    *        struct ListNode *next;
    *        ListNode(int x) :
    *              val(x), next(NULL) {
    *        }
    *  };
    */
    class Solution {
    public:
          vector<int> printListFromTailToHead(ListNode* head) {
              vector<int> returnint;
              std::stack<ListNode* > nodes;
              ListNode* Node=head;
              while (Node!=nullptr)
              {
                  nodes.push(Node);
                  Node=Node->next;
              }
              while(!nodes.empty())
              {
                  Node=nodes.top();
                  returnint.push_back(Node->val);
                  nodes.pop();
              }
              return returnint;
        }
    };

    2.反向迭代器 .rbegin() .rend()

    提交时间:2018-07-11 语言:C++ 运行时间: 3 ms 占用内存:484K 状态:答案正确

    /**
    *  struct ListNode {
    *        int val;
    *        struct ListNode *next;
    *        ListNode(int x) :
    *              val(x), next(NULL) {
    *        }
    *  };
    */
    class Solution {
    public:
            vector<int> printListFromTailToHead(ListNode* head) {
            vector<int> v;                         
            ListNode *p = head;
            while (p != nullptr) {
               v.push_back(p->val);
               p = p->next;
            }
            //反向迭代器创建临时对象
            return vector<int>(v.rbegin(), v.rend());
        }
    };

    3.递归

    提交时间:2018-07-11 语言:C++ 运行时间: 3 ms 占用内存:480K 状态:答案正确

    /**
    *  struct ListNode {
    *        int val;
    *        struct ListNode *next;
    *        ListNode(int x) :
    *              val(x), next(NULL) {
    *        }
    *  };
    */
    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;
         }
    };

    JAVA

    1.

    提交时间:2018-07-11 语言:Java 运行时间: 20 ms 占用内存:9248K 状态:答案正确

    /**
    *    public class ListNode {
    *        int val;
    *        ListNode next = null;
    *
    *        ListNode(int val) {
    *            this.val = val;
    *        }
    *    }
    *
    */
    import java.util.ArrayList;
    public class Solution {
            public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            ArrayList<Integer> list=new ArrayList<Integer>();
            ListNode pre=null;
            ListNode next=null;
            while(listNode!=null){
                next=listNode.next;
                listNode.next=pre;
                pre=listNode;
                listNode=next;
            }
            while(pre!=null){
                list.add(pre.val);
                pre=pre.next;
            }
            return list;
        }
    }

    2.

    提交时间:2018-07-11 语言:Java 运行时间: 20 ms 占用内存:9328K 状态:答案正确

    /**
    *    public class ListNode {
    *        int val;
    *        ListNode next = null;
    *
    *        ListNode(int val) {
    *            this.val = val;
    *        }
    *    }
    *
    */
    import java.util.ArrayList;
    public class Solution {
         ArrayList<Integer> arrayList=new ArrayList<Integer>();
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            if(listNode!=null){
                this.printListFromTailToHead(listNode.next);
                arrayList.add(listNode.val);
            }
            return arrayList;
        }
        }

    Python递归

    提交时间:2018-07-11 语言:Python 运行时间: 27 ms 占用内存:5728K 状态:答案正确

    # -*- coding:utf-8 -*-
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
     
    class Solution:
        # 返回从尾部到头部的列表值序列,例如[1,2,3]
        def printListFromTailToHead(self, listNode):
            # write code here
            if listNode is None:
                return []
            return self.printListFromTailToHead(listNode.next) + [listNode.val]
  • 相关阅读:
    golang GC(二 定位)
    MySQL的安装与配置——详细教程
    js实现关闭浏览器
    解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
    如何将将本地电脑部署成服务器
    Mysql统计每年每个月的数据——详细教程
    博客、笔记
    JAVAWEB实现修改功能
    JAVAWEB实现添加功能
    JavaWeb实现删除功能
  • 原文地址:https://www.cnblogs.com/lightmare/p/10425129.html
Copyright © 2011-2022 走看看