zoukankan      html  css  js  c++  java
  • 341. Flatten Nested List Iterator

    题目来源:

    https://leetcode.com/problems/flatten-nested-list-iterator/submissions/

     自我感觉难度/真实难度:mid             写题时间时长:

     题意:

     分析:

     自己的代码:

    class NestedIterator(object):
    
        def __init__(self, nestedList):
            """
            Initialize your data structure here.
            :type nestedList: List[NestedInteger]
            """
            self.queue=collections.deque()
            
            def getAll(nests):
                for nest in nests:
                    if nest.isInteger():
                        self.queue.append(nest.getInteger())
                    else:
                        getAll(nest.getList())
                
            getAll(nestedList)
            
    
        def next(self):
            """
            :rtype: int
            """
            if self.hasNext():
                return self.queue.popleft()
            else:
                return None
    
        def hasNext(self):
            """
            :rtype: bool
            """
            return len(self.queue)

    代码效率/结果:

     优秀代码:

    class NestedIterator(object):
    
        def __init__(self, nestedList):
            """
            Initialize your data structure here.
            :type nestedList: List[NestedInteger]
            """
            # print nestedList
            self.stack = nestedList
            # print "----", self.stack
            self.stack.reverse()
            
    
        def next(self):
            """
            :rtype: int
            """        
            return self.stack.pop().getInteger()
            
    
        def hasNext(self):
            """
            :rtype: bool
            """
            while self.stack and not self.stack[-1].isInteger():
                lst = self.stack.pop().getList()
                if lst:
                    lst.reverse()
                    self.stack.extend(lst)
            
            return len(self.stack) != 0

    代码效率/结果:

     自己优化后的代码:

     反思改进策略:

    1.不会使用类变量。     solution 类里面,使用self.queue,那么在整个类里面都是可以使用的

    2.pop() 默认是弹出后面的元素,popleft(),弹出 左边的

    3.没有很明白下面两个函数是什么用处:

    getList()
    .getInteger()
  • 相关阅读:
    django DEBUG=False
    Lftp 简单使用步骤
    django admin管理后台中文添加问题
    Rsync同步设置的一例
    在nginx中,禁止IP访问.只可以使用域名访问.
    python imaplib无痕取信的主要
    Centos安装配置Postfix邮件服务器--网址
    还没有写完准备弡上cpickle 还有字典
    python 截取某一天的日志,简单操作
    abp 关闭审计日志
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10715256.html
Copyright © 2011-2022 走看看