株価
10051 ワード
import java.util.*;
public class 주식가격 {
public Queue<Integer> solution(int[] prices) {
Queue<Integer> q = new LinkedList<>();
for(int i=0; i<prices.length; i++){
int cnt = 0;
for(int j=i+1; j<prices.length; j++){
if(prices[j] >= prices[i]){
cnt++;
}else{
cnt++;
break;
}
}
q.offer(cnt);
}
return q;
}
}
Qを使用していますが、挿入時のみ資料型、時間複雑度n^2を使用しています.時間の複雑さを減らすためにstack資料型を用いて問題を再解答し,上記のように行っても効率テストに合格した.
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
Stack<Integer> s = new Stack<>();
for(int i=0; i<prices.length; i++){
while(!s.empty() && prices[s.peek()] > prices[i]){
answer[s.peek()] = i - s.peek();
s.pop();
}
s.push(i);
}
while(!s.empty()){
answer[s.peek()] = prices.length-s.peek()-1;
s.pop();
}
return answer;
}
}
Reference
この問題について(株価), 我々は、より多くの情報をここで見つけました https://velog.io/@eunseo2/주식가격テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol