程式語言 - LeetCode - C - 334. Increasing Triplet Subsequence



參考資訊:
https://www.cnblogs.com/grandyang/p/5194599.html

題目:


解答1:

bool increasingTriplet(int* nums, int numsSize)
{
    int i = 0;
    int m1 = INT_MAX;
    int m2 = INT_MAX;

    for (i = 0; i < numsSize; i++) {
        if (m1 >= nums[i]) {
            m1 = nums[i];
        }
        else if (m2 >= nums[i]) {
            m2 = nums[i];
        }
        else {
            return true;
        }
    }

    return false;
}

解答2:

int max(int a, int b)
{
    return a > b ? a : b;
}

int min(int a, int b)
{
    return a < b ? a : b;
}

bool increasingTriplet(int* nums, int numsSize)
{
    int i = 0;
    int vmax[500000] = { 0 };
    int vmin[500000] = { 0 };

    vmin[0] = nums[0];
    for (i = 0; i < numsSize - 1; i++) {
        vmin[i + 1] = min(nums[i], vmin[i]);
    }

    vmax[numsSize - 1] = nums[numsSize - 1];
    for (i = numsSize - 1; i > 0; i--) {
        vmax[i - 1] = max(nums[i], vmax[i]);
    }

    for (i = 0; i < numsSize; i++) {
        if ((nums[i] > vmin[i]) && (nums[i] < vmax[i])) {
            return true;
        }
    }

    return false;
}