leetcode 1944.キューに表示される人の数(python)

オファーが届きました。友達を掘って受け取りましょう!2022年春の採用チェックインイベントに参加しています。クリックしてイベントの詳細を表示してください

説明

列に並んでいるのはn人で、左から右の順に0からn-1まで番号が付けられています。異なる整数の配列の高さが与えられます。ここで、heights [i]はi番目の人の高さを表します。間にいる全員が両方より短い場合、人はキューの右側に別の人を見ることができます。より正式には、i <jかつmin(heights [i]、heights [j])> max(heights [i + 1]、heights [i + 2]、..の場合、i番目の人はj番目の人を見ることができます。 、heights [j-1])。長さnの配列回答を返します。ここで、answer [i]は、i番目の人がキューの右側に表示できる人数です。

例1:

Input: heights = [10,6,8,5,11,9]
Output: [3,1,2,1,1,0]
Explanation:
Person 0 can see person 1, 2, and 4.
Person 1 can see person 2.
Person 2 can see person 3 and 4.
Person 3 can see person 4.
Person 4 can see person 5.
Person 5 can see no one since nobody is to the right of them.
复制代码

ノート:

n == heights.length
1 <= n <= 105
1 <= heights[i] <= 105
All the values of heights are unique.
复制代码

解析

質問の意味によると、キューには左から右の順に0からn-1までの番号が付けられたn人が立っています。異なる整数の配列の高さが与えられます。ここで、heights[i]はi番目の人の高さを表します。各人は、右側の視線にいる人だけを見ることができ、長さnの配列回答を返します。ここで、answer [i]は、キュー内のi番目の人の右側に表示される人の数です。

例1から、各人の身長[i]は、右側の身長が自分の身長以下であり、身長が高くなっていること、および「身長の谷」にいる人だけがわかることがわかります。 「右側は左側からは見えません。これは本質的に単調なスタックを調べる問題です。右から左に向かって高さを下げるシーケンスを維持できます。新しい高さhが見つかると、次のようになります。スタックの一番上にhよりも小さい高さをポップアップし(これは、数人がhによってブロックされ、後ろに見えないため)、hの右側に見える人を数えます。スタックの場合現時点では、count + 1は空ではありません。これは、右側の少なくとも1つがh以上であるためです。高さのある人を見ることができます。このプロセスを繰り返して答えを見つけてください。

答え

class Solution(object):
    def canSeePersonsCount(self, heights):
        """
        :type heights: List[int]
        :rtype: List[int]
        """
        N = len(heights)
        stack = []
        result = [0] * N
        for i in range(N-1, -1, -1):
            count = 0
            while stack and heights[i]>heights[stack[-1]]:
                count += 1
                stack.pop()
            if stack:
                count += 1
            result[i] = count
            stack.append(i)
        return result
            
            
		
复制代码

運転結果

Runtime: 1112 ms, faster than 70.59% of Python online submissions for Number of Visible People in a Queue.
Memory Usage: 26.5 MB, less than 38.24% of Python online submissions for Number of Visible People in a Queue.
复制代码

元のタイトルリンク:leetcode.com/problems/nu…

あなたのサポートは私の最大の動機です

おすすめ

転載: juejin.im/post/7078841109593456670