アルゴリズム問題#1-株価


アルゴリズム問題との接触


以前アルゴリズムの問題を何回かやったことがある.いい感じだしかし、これは井戸の中の蛙にすぎない.資料構造を学ぶときに知ったアルゴリズムの問題は別の世界のようだ.

目で『スタックとQって何なのかわかるよね』って言ってたけど、実は髪の毛は『?』反応している.
これは私に容易すぎる問題だと思います.
誰もがきちんとした計画を持っている.打たれる前に...

昨日から問題に打たれてストレスが溜まっています.しかし、性格的には諦められない.全部解けば気が済む気がするから付きまとうよ
問題が理解できないので、1時間です.
あと1時間で、他の人の解答を理解したいです.
スタックとキューをもう一度よく見て、問題を理解するのに1時間かかります.
そして2時間かけて問題を解決します.
結局、医師コードを書くことで、エラーを見つけ、問題を解決しました.
質問に答えるには、solution関数の数値リストが1時間(秒)の株価です.
たとえば
1秒1元
2秒2元
3秒3元
4秒2元
5秒3元
ここでの問題は、価格ごとにどれだけのリターンを維持または上昇させるかです.
1秒:ソリューション[0]=1
4秒の時間(リストの長さ)内で、1元の価格より下がることはないので、価格は4秒維持されます.
2秒:ソリューション[1]=2
3秒でも2元以下の価格にならないので、価格は3秒維持されます.
3秒:溶液[2]=3
3元の価格のうち、次の価格は2元です.結局、1秒後には価格が下がります.ここで価格維持時間は1秒です.
4秒:溶液[3]=2
2元の価格は残り1秒で下がらないので、1を返します.
5秒:溶液[4]=3
最後に3元で引けましたか?いいですよ.ここで3元で終わりますので、0を返します.
初めて何のヒントもなく問題を見たとき、私はルールを探すように努力しましたが、ありませんでした.問題の説明が足りないようです.
問題を理解したら、鼻クリップで解いてみます.
def solution(prices):

    w = True
    k = 0 # 1씩 올라가는 값
    result = []

    while w==True:

        for i in range(k,len(prices)): # k부터 끝까지
            if prices[k] > prices[i]: # k보다 i가 작을 때 (가격이 내려갔을 때)
                result.append(i-k) # k(price[k]의 위치) - i(prices[i]의 위치)를 result에 포함
                break
            elif (i == len(prices)-1) and prices[i] >= prices[k]: #마지막에 비교한 i값이 k와 같거나 i가 더 클 때
                result.append(len(prices) - k-1) #전체 시간(리스트의 크기)에서 k -1 을 뺀 시간을 result에 포함
                break
        
        k += 1
        if k == len(prices): #k가 prices 길이가 같으면 False 출력하여 while문 탈출
            w = False
    
    return result

結果はね。



渡航!
感じた点:修正を書くのに1時間半もかかったようです.最後に釈放されて,うれしく思う.問題が始まる前から感じていましたが、appendを書くのはスタック、キューの問題かもしれませんが、結論的には探索問題であるはずです.
そして、今回の問題を通して、もっとアルゴリズムを学ぶ必要があると思います.