zoukankan      html  css  js  c++  java
  • leetcode1019

     1 class Solution(object):
     2     def nextLargerNodes(self, head: ListNode) -> 'List[int]':
     3         n = 0
     4         temp = head
     5         while temp != None:
     6             n += 1
     7             temp = temp.next
     8         R = [0] * n
     9         Stack = list()
    10         index = 0
    11         while head != None:
    12             #print(head.val)
    13             cur = head.val
    14             if len(Stack) == 0:
    15                 Stack.append((index,cur))
    16             else:
    17                 for i in range(len(Stack)-1,-1,-1):
    18                     peeknode = Stack[-1]
    19                     peekindex = peeknode[0]
    20                     peekval = peeknode[1]
    21                     if peekval < cur:
    22                         R[peekindex] = cur
    23                         Stack.remove((peekindex,peekval))
    24                     else:
    25                         break
    26                 Stack.append((index,cur))
    27             head = head.next
    28             index += 1
    29 
    30         return R

    使用一个栈结构用来记录数据,遍历整个链表,用当前节点的值“依次”与栈内各数字比较。

    如果当前值>栈顶值,则栈顶元素进行“标记”,并出栈。一直到栈为空或者当前值<栈内值时,将当前值,入栈。

    最后留在栈中的,都“标记”为0。这一步在初始化时就可以完成,因此最后就不用再处理了。

  • 相关阅读:
    jQuery教程
    AJAX请求 $.ajax方法的使用
    smarty block_function
    smarty
    位运算版本的交换两数
    提取字符串中的数字
    vue地址插件多级联动自适应 + github地址
    vue插件
    网页title旁边的小图片
    二十三种设计模式[14]
  • 原文地址:https://www.cnblogs.com/asenyang/p/10632736.html
Copyright © 2011-2022 走看看