코딩테스트
[릿코드/js] 다시풀기 334. Increasing Triplet Subsequence
_서리__
2023. 9. 15. 11:13
var increasingTriplet = function(nums) {
let len = nums.length;
let i = 0;
let j = 1;
let k = 2;
if (len < 3) return false;
while (i < j && j < len - 1)
{
while (j < k && k < len)
{
while (k < len)
{
if (nums[i] < nums[j] && nums[j] < nums[k]) return true;
k++;
}
j++;
k = j + 1;
}
i++;
j = i + 1;
k = j + 1;
}
return false;
};
-> 처음 푼 풀이 3중 while문을 써서 O(n^3)의 시간복잡도로 풀었다.... 애초에 조건이 O(n)으로 풀라고 주어짐 당연히 테케 통과X...
var increasingTriplet = function(nums) {
let firstNum = Infinity;
let secondNum = Infinity;
for (let current of nums)
{
if (current > firstNum && current > secondNum){
return true;
}
if (firstNum < current)
{
secondNum = current;
}
else {
firstNum = current;
}
}
return false;
};
-> 타인의 풀이. 한번만 돌면서 세개의 값을 비교할 수 있다.
조건문에 의해 항상 firstnum < secondnum으로 유지됨. 이상태에서 현재 값이 secnondnum보다 크다면 true값 반환!