株価(プログラマー)


リンクテキスト

問題を理解する


秒単位で記録された株価の配列価格をパラメータとして指定すると、価格が下がらない時間帯に数秒戻るように解く関数が完了する.
I/O例
prices return
[1, 2, 3, 2, 3][4, 3, 1, 1, 0]

私の理解


実は問題が多い.私だけなのかはわかりませんが、基準を超えた時点はとても混乱しています.質問欄の説明を見て、価格要素ごとに自分の要素の個数より大きいものを求める問題と理解し、なければ、自分で1つだけ数えればいいのです.最後のインデックスの要素の後ろには時点がないので、0をあげればいいです.

Python

from collections import deque

def solution(prices):
    queue = deque(prices)
    answer = []
    
    while queue:
        price = queue.popleft()
        sec = 0
        for q in queue:
            sec += 1
            if price > q:
                break 
        answer.append(sec)        
    return answer
Pythonでdeque関数を実現しました.Popleftをするとインデックススライドと同じ機能をする[1:]という形でそこで一つ一つカットしてカウントダウンし、結果をリストに並べて返します.

C++

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> prices) {
    vector<int> answer;
    for (int i=0; i<prices.size();i++){
        int check =0;
        for (int t = i+1; t<prices.size(); t++){
            check +=1;
            if (prices[i]> prices[t]){
                break;
            }
        }
        answer.push_back(check);
    }
    return answer;
}
CPPは二重for文で記述されている.これにより、インデックスに基づいて巡回し、push backを1つずつ返します.