返回介绍

solution / 1200-1299 / 1265.Print Immutable Linked List in Reverse / README

发布于 2024-06-17 01:03:21 字数 4766 浏览 0 评论 0 收藏 0

1265. 逆序打印不可变链表

English Version

题目描述

给您一个不可变的链表,使用下列接口逆序打印每个节点的值:

  • ImmutableListNode: 描述不可变链表的接口,链表的头节点已给出。

您需要使用以下函数来访问此链表(您 不能 直接访问 ImmutableListNode):

  • ImmutableListNode.printValue():打印当前节点的值。
  • ImmutableListNode.getNext():返回下一个节点。

输入只用来内部初始化链表。您不可以通过修改链表解决问题。也就是说,您只能通过上述 API 来操作链表。

 

示例 1:

输入:head = [1,2,3,4]
输出:[4,3,2,1]

示例 2:

输入:head = [0,-4,-1,3,-5]
输出:[-5,3,-1,-4,0]

示例 3:

输入:head = [-2,0,6,4,4,-6]
输出:[-6,4,4,6,0,-2]

     

    提示:

    • 链表的长度在 [1, 1000] 之间。
    • 每个节点的值在 [-1000, 1000] 之间。

     

    进阶:

    您是否可以:

    • 使用常数级空间复杂度解决问题?
    • 使用线性级时间复杂度和低于线性级空间复杂度解决问题?

    解法

    方法一:递归

    我们可以使用递归来实现链表的逆序打印。在函数中,我们判断当前节点是否为空,如果不为空,则获取下一个节点,然后递归调用函数本身,最后打印当前节点的值。

    时间复杂度 $O(n)$,空间复杂度 $O(n)$。其中 $n$ 是链表的长度。

    # """
    # This is the ImmutableListNode's API interface.
    # You should not implement it, or speculate about its implementation.
    # """
    # class ImmutableListNode:
    #   def printValue(self) -> None: # print the value of this node.
    #   def getNext(self) -> 'ImmutableListNode': # return the next node.
    
    
    class Solution:
      def printLinkedListInReverse(self, head: 'ImmutableListNode') -> None:
        if head:
          self.printLinkedListInReverse(head.getNext())
          head.printValue()
    
    /**
     * // This is the ImmutableListNode's API interface.
     * // You should not implement it, or speculate about its implementation.
     * interface ImmutableListNode {
     *   public void printValue(); // print the value of this node.
     *   public ImmutableListNode getNext(); // return the next node.
     * };
     */
    
    class Solution {
      public void printLinkedListInReverse(ImmutableListNode head) {
        if (head != null) {
          printLinkedListInReverse(head.getNext());
          head.printValue();
        }
      }
    }
    
    /**
     * // This is the ImmutableListNode's API interface.
     * // You should not implement it, or speculate about its implementation.
     * class ImmutableListNode {
     * public:
     *  void printValue(); // print the value of the node.
     *  ImmutableListNode* getNext(); // return the next node.
     * };
     */
    
    class Solution {
    public:
      void printLinkedListInReverse(ImmutableListNode* head) {
        if (head) {
          printLinkedListInReverse(head->getNext());
          head->printValue();
        }
      }
    };
    
    /*   Below is the interface for ImmutableListNode, which is already defined for you.
     *
     *   type ImmutableListNode struct {
     *
     *   }
     *
     *   func (this *ImmutableListNode) getNext() ImmutableListNode {
     *    // return the next node.
     *   }
     *
     *   func (this *ImmutableListNode) printValue() {
     *    // print the value of this node.
     *   }
     */
    
    func printLinkedListInReverse(head ImmutableListNode) {
      if head != nil {
        printLinkedListInReverse(head.getNext())
        head.printValue()
      }
    }
    
    /**
     * // This is the ImmutableListNode's API interface.
     * // You should not implement it, or speculate about its implementation
     * class ImmutableListNode {
     *    printValue() {}
     *
     *    getNext(): ImmutableListNode {}
     * }
     */
    
    function printLinkedListInReverse(head: ImmutableListNode) {
      if (head) {
        printLinkedListInReverse(head.next);
        head.printValue();
      }
    }
    
    /**
     * // This is the ImmutableListNode's API interface.
     * // You should not implement it, or speculate about its implementation.
     * class ImmutableListNode {
     *   public void PrintValue(); // print the value of this node.
     *   public ImmutableListNode GetNext(); // return the next node.
     * }
     */
    
    public class Solution {
      public void PrintLinkedListInReverse(ImmutableListNode head) {
        if (head != null) {
          PrintLinkedListInReverse(head.GetNext());
          head.PrintValue();
        }
      }
    }
    

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
    列表为空,暂无数据
      我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
      原文