zoukankan      html  css  js  c++  java
  • 剑指offer-从尾到头打印链表

    题目要求

    输入一个链表,从尾到头放入ArrayList并返回。

    C++实现

    /**
    *  struct ListNode {
    *        int val;
    *        struct ListNode *next;
    *        ListNode(int x) :
    *              val(x), next(NULL) {
    *        }
    *  };
    */
    class Solution {
    public:
        vector<int> printListFromTailToHead(ListNode* head) {
            ListNode *p=head;
            vector<int> ArrayList;
            while(p!=nullptr){
                ArrayList.push_back(p->val);
                p=p->next;
            }
            reverse(ArrayList.begin(),ArrayList.end());
            return ArrayList;
        }
    };
    

    头插vector效率很低,所以采用先push_back,后翻转vector的方式。
    同样的思路使用Python实现如下。

    Python实现

    非递归实现

    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution:
        # 返回从尾部到头部的列表值序列,例如[1,2,3]
        def printListFromTailToHead(self, listNode):
            ArrayList=[]
            while listNode is not None:
                ArrayList.append(listNode.val)
                listNode=listNode.next
            ArrayList.reverse()
            return ArrayList
    

    递归实现

    # -*- 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]
    
    keep going
  • 相关阅读:
    关于API微服务网关
    适用于企业的API管理平台
    简单的api测试
    Json,2020年api数据格式的Top 1
    API文档之团队协作
    如何进行API测试以提高程序质量
    API接口也要监控?
    春招实习_腾讯 wxg 一面 3.27 15:00
    春招实习_腾讯一面 & 二面_3.13
    春招实习_阿里一面
  • 原文地址:https://www.cnblogs.com/MarkKobs-blog/p/10344500.html
Copyright © 2011-2022 走看看