LeetCode1019.Next Greater Node In Linked List(체인 테이블의 다음 더 큰 노드)

3280 단어 code
1019.Next Greater Node In Linked List(체인 테이블의 다음 더 큰 노드)
  • Description
  • Difficulty: medium
  • Example 1:
  • Example 2:
  • Example 3:
  • Note:
  • 분석
  • 참조 코드
  • Description
    We are given a linked list with head as the first node. Let’s number the nodes in the list: node_1 , node_2 , node_3 , … etc.
    Each node may have a next larger value: for node_i , next_larger(node_i) is the node_j.val such that j > i , node_j.val > node_i.val , and j is the smallest possible choice. If such a j does not exist, the next larger value is 0 .
    Return an array of integers answer, where answer[i] = next_larger(node_{i+1}) .
    Note that in the example inputs (not outputs) below, arrays such as [2,1,5] represent the serialization of a linked list with a head node value of 2, second node value of 1, and third node value of 5.
    헤드 노드 head을 첫 번째 노드로 하는 체인표를 제시한다.체인 테이블의 노드는 각각 node_1, node_2, node_3,...
    노드마다 다음 값이 있을 수 있다(next larger value). node_i의 경우 next_larger(node_i)node_j.val이면 j > i이고 node_j.val > node_i.val이다. j은 가능한 옵션 중 가장 작은 것이다.이런 j이 존재하지 않는다면 다음 더 큰 값은 0이다.
    정수 답안 수조 answer, 그중 answer[i] = next_larger(node_{i+1})을 되돌려줍니다.
    주의: 아래의 예에서 [2,1,5]과 같은 입력(출력이 아님)은 체인 테이블의 서열화 표시로 헤드 노드의 값은 2, 두 번째 노드의 값은 1, 세 번째 노드의 값은 5이다.
    제목 링크:https://leetcode.com/problems/next-greater-node-in-linked-list/
    개인 홈페이지:http://redtongue.cn or https://redtongue.github.io/
    Difficulty: medium
    Example 1:
    Input: [2,1,5]
    Output: [5,5,0]
    

    Example 2:
    Input: [2,7,4,3,5]
    Output: [7,0,5,5,0]
    

    Example 3:
    Input: [1,7,5,1,9,2,5,1]
    Output: [7,9,9,9,0,5,0,0]
    

    Note:
  • 1 <= node.val <= 10^9 for each node in the linked list.
  • The given list has length in the range [0, 10000].

  • 분석하다.
  • 은 index 아날로그 창고로 체인 테이블을 두루 저장한 결과 각각의 항목(각 노드 val, 체인 테이블의 위치pos)을 포함한다.
  • li는 각 노드에 대응하는 다음 더 큰 값을 저장한다. 처음에는 0이다.
  • 체인 테이블을 옮겨다니며 현재 헤드의 값이 창고 꼭대기 요소의val보다 크면 현재 창고 꼭대기 요소가 대응하는 노드의 다음 최대 노드의 값은head의 val이고 li를 수정한다.
  • 반대로 헤드의val과 그에 대응하는pos의 입국;
  • 체인 시계를 훑어보고 리로 돌아갑니다.

  • 참조 코드
    #Definition for singly-linked list.
    class ListNode(object):
    def __init__(self, x):
        self.val = x
        self.next = None
    
    class Solution(object):
    def nextLargerNodes(self, head):
        h=head
        length=0
        while(h!=None):
            length+=1
            h=h.next
        if(length==0):
            return []
        li=[0]*length
        index=[]
        pos=0
        while head != None:
            if(len(index)!=0 and index[-1][0] < head.val):
                li[index[-1][1]]=head.val
                index=index[:-1]
            else:
                index.append((head.val,pos))
                head=head.next
                pos+=1
        return li
    

    좋은 웹페이지 즐겨찾기