11. 盛最多水的容器(LeetCode )——C语言

暴力破解法——循环遍历所有可能的边界组合

int maxArea(int* height, int heightSize){
    int max = 0;
    for (int i = 0; i < heightSize; i++) {
        for (int j = i + 1; j < heightSize; j++) {
            int min = height[i] < height[j] ? height[i] : height[j];
            if (min * (j - i) > max) {
                max = min * (j - i);
            }
        }
    }
    return max;
}

双指针法:

int maxArea(int* height, int heightSize){
    int max = 0;
    for (int i = 0, j = heightSize - 1; i < j; ) {
        int min = height[i] <= height[j] ? i : j;
        if (height[min] * (j - i) > max) {
            max = height[min] * (j - i);
        }
        if (min == i) {
            i++;
        } else if (min == j) {
            j--;
        }
    }
    return max;
}

image

时间复杂度:O(n)
空间复杂度:O(1)

你可能感兴趣的:(c,算法,leetcode)