[programmers]株価
5104 ワード
問題のショートカット
秒単位で記録された株価の配列価格をパラメータとして指定すると、価格が下がらない時間帯に数秒戻るように解く関数が完了する.
説明する
秒単位で記録された株価の配列価格をパラメータとして指定すると、価格が下がらない時間帯に数秒戻るように解く関数が完了する.
説明する
すぐにドアを回してください.
最後に株価が下落していない場合だけ考えます.
他人を解く
スタックを利用しました.def solution(p):
# 답을 넣을 ans 배열
ans = [0] * len(p)
# index를 하나씩 넣어준다.
stack = [0]
for i in range(1, len(p)):
# 만약 stack 마지막 값보다 현재 index 의 주식 가격이 적으면
if p[i] < p[stack[-1]]:
# stack 을 역으로 돌면서
for j in stack[::-1]:
# 값이 처음으로 떨어진 가격들에 대하여 시간을 계산하여 answer 에 넣어준다.
# 값이 떨어진 index 는 stack 에서 제거한다.
if p[i] < p[j]:
ans[j] = i-j
stack.remove(j)
else:
break
stack.append(i)
# 아직까지 stack 에 남아있는 값들은 마지막까지 값이 떨어지지 않은 주식가격들. 이를 계산하여 ans 에 넣어준다.
for i in range(0, len(stack)-1):
ans[stack[i]] = len(p) - stack[i] - 1
return ans
常にforゲートを迂回し、現在のidxの株価よりも高い子供を排除します.すなわち、スタック内のidxには、株価がその時点以下であるidxのみが存在する.
Reference
この問題について([programmers]株価), 我々は、より多くの情報をここで見つけました
https://velog.io/@jujube0/Programmers-주식-가격
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
スタックを利用しました.
def solution(p):
# 답을 넣을 ans 배열
ans = [0] * len(p)
# index를 하나씩 넣어준다.
stack = [0]
for i in range(1, len(p)):
# 만약 stack 마지막 값보다 현재 index 의 주식 가격이 적으면
if p[i] < p[stack[-1]]:
# stack 을 역으로 돌면서
for j in stack[::-1]:
# 값이 처음으로 떨어진 가격들에 대하여 시간을 계산하여 answer 에 넣어준다.
# 값이 떨어진 index 는 stack 에서 제거한다.
if p[i] < p[j]:
ans[j] = i-j
stack.remove(j)
else:
break
stack.append(i)
# 아직까지 stack 에 남아있는 값들은 마지막까지 값이 떨어지지 않은 주식가격들. 이를 계산하여 ans 에 넣어준다.
for i in range(0, len(stack)-1):
ans[stack[i]] = len(p) - stack[i] - 1
return ans
常にforゲートを迂回し、現在のidxの株価よりも高い子供を排除します.すなわち、スタック内のidxには、株価がその時点以下であるidxのみが存在する.Reference
この問題について([programmers]株価), 我々は、より多くの情報をここで見つけました https://velog.io/@jujube0/Programmers-주식-가격テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol