美文网首页
从尾到头打印链表

从尾到头打印链表

作者: 程序学习er | 来源:发表于2019-03-16 23:48 被阅读0次
    class Solution:
        def printListFromTailToHead(self, listNode):
            l = len(listNode) - 1
            a = 0
            new_listNode = []
            while l+1:
                new_listNode.append(listNode[l])
                l -= 1
            return new_listNode
    
    if __name__ == '__main__':
        listNode = [1,2,3]
        a = Solution().printListFromTailToHead(listNode)
        print(a)
    
    犯错的地方在

    1、创建数组的时候创建的是创建直接a = [] 不是 a = [n],错的很低级
    2、while l和while l+1
    当然这可能是最蠢的方法

    但是调试没有通过!!!日

    分享下其他厉害思想

    1、递归

    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution:
        def printListFromTailToHead(self, listNode):
        # write code here 
            if listNode is None: 
                return [] 
            return self.printListFromTailToHead(listNode.next) + [listNode.val]
           #是数组和另一个数组合并的时候用+, 比如a = [1], b=[2], a+b = [1,2]
           #其余如果不是用数组合并就是用append
    

    思路也不难,就是两个条件
    1、若是空list,则直接什么都不加
    2、若不是空list,则添加listNode的末尾值

    2、运用栈的特性

    import java.util.ArrayList;
    import java.util.Stack;
    public class Solution {
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            Stack<Integer> stack=new Stack<Integer>();
            while(listNode!=null){
                stack.push(listNode.val);
                listNode=listNode.next;     
            }
    
            ArrayList<Integer> list=new ArrayList<Integer>();
            while(!stack.isEmpty()){
                list.add(stack.pop());
            }
            return list;
        }
    }
    
    
    

    相关文章

      网友评论

          本文标题:从尾到头打印链表

          本文链接:https://www.haomeiwen.com/subject/wpzemqtx.html