五大数
白駿17298
ああ大数を得る
にゅうしゅつりょく
入出力:435 2 757–1495 4 8–1 8–1
方法
:iの1番目の要素とi+1:の要素を二重for文で比較し、iの1番目の要素より大きい要素がある場合はflagを増やしてbreak文から終了します.flagが0の場合、iの1番目の要素より大きい要素はないので、-1を印刷し、0でない場合は比較した数字を印刷します.
サイズは10万ですのでタイムアウトが予想されます運転中にエラー(名前エラー)O(N^2)
知るところ
スタックは,正確にはスタックのpop()を用いることで時間を短縮できる.O(N)
コード#コード#
n = int(input())
arr = list(map(int, input().split()))
result = [-1]*len(arr)
stack = []
for i in range(len(arr)):
while stack and stack[-1][0] < arr[i]:
v, j = stack.pop()
result[j] = arr[i]
stack.append((arr[i], i))
print(*result)
Reference
この問題について(五大数), 我々は、より多くの情報をここで見つけました https://velog.io/@sezeom/오큰수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol