궁금한게 많은 개발자 노트

[ leetcode ] 334. Increasing Triplet Subsequence 본문

Algorithm

[ leetcode ] 334. Increasing Triplet Subsequence

궁금한게 많은 개발자 2023. 7. 17. 10:49

해당 문제는 숫자로 이루어진 배열에서, 서로 다른 인덱스 i, j, k가 i < j < k관계를 이루고, index에 존재하는 값도

nums[i] < nums[j] < nums[k]를 이루는 i, j, k가 존재하는지 여부를 판단하는 문제입니다.

연속성을 가질 필요는 없지만 해당 조건을 만족하기 위해서는 두 변수가 필요하고, 한 변수에는 가장 작은 값을 업데이트하고, 두 번째 변수에는 첫 변수보다 높은 값이 나타나면 업데이트, 그리고 세번째 아이템을 만났을 때 두번 째 변수보다 크다면 해당 조건을 만족하는 i, j, k가 존재한다는 의미입니다.

첫번째 변수가 채워졌는데 배열에서 다음 값이 더 작다면 다시 첫변수를 업데이트해주고, 더 크다면 두번째를 채우고, 두번째보다 더 큰 값이 나오면 조건을 만족한다고 반환합니다.

class Solution {
public:
    bool increasingTriplet(vector<int>& nums) {
        int one = INT_MAX, two = INT_MAX;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] <= one) one = nums[i];
            else if (nums[i] <= two) two = nums[i];
            else return true;
        }
        return false;
    }
};
Comments