반응형
1. 문제
https://leetcode.com/problems/daily-temperatures/description/
2. 코드
/**
* @param {number[]} temperatures
* @return {number[]}
*/
var dailyTemperatures = function(temperatures) {
let answer = [];
for(let i=0;i<temperatures.length;i++){
let wait = 0;
for(let j=i;j<temperatures.length;j++){
if(temperatures[i] < temperatures[j]){
answer[i] = wait;
wait = 0;
break;
}
else wait += 1;
}
if(wait) answer[i] = 0;
}
return answer;
};
나는 무지 간단한 방법(직관적인..)으로 풀었지만, 탑-다운 / 바텀-업 풀이를 사용한 좋은 코드들이 있었다.
내 풀이(위의 코드)의 결과는 다음과 같았다.
스택을 사용한 탑-다운 방식의 결과는 다음과 같았다. 훨씬 더 좋은 풀이 방법이다.
var dailyTemperatures = function(temperatures) {
let stack = [];
let res = new Array(temperatures.length).fill(0);
for (let i = 0; i < n; i++) {
while (stack.length && temperatures[i] > temperatures[stack[stack.length-1]]) {
let idx = stack.pop();
res[idx] = i - idx;;
}
stack.push(i);
}
return res;
};
반응형
'리트코드 > midium' 카테고리의 다른 글
[리트코드] 238. Product of Array Except Self - js (0) | 2023.08.12 |
---|---|
[리트코드] 131. Palindrome Partitioning - js (0) | 2023.08.11 |
[리트코드] 215. Kth Largest Element in an Array (0) | 2023.08.09 |
[리트코드] 49. Group Anagrams - js (0) | 2023.08.08 |
[리트코드] 39. Combination Sum - js (0) | 2023.08.07 |