C解法

更新中
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

JS解法

输入处理:

使用 readline 模块读取标准输入。
验证输入是否符合要求:
输入字符串必须包含逗号。
每个逗号分隔的元素必须是一个有效整数。
数组长度必须大于等于 2。
如果输入无效,则输出 1 表示错误。
双指针法:

左指针 left 从数组的起始位置开始。
右指针 right 从数组的末尾位置开始。
在指针未相遇前,计算当前指针形成的容器面积,更新最大面积 maxArea。
指针移动规则:

比较左右指针对应的高度:
如果左指针高度较小,则左指针右移。
如果右指针高度较小,则右指针左移。
目的是尽可能找到更高的线条,提高面积。
输出结果:

循环结束后,返回最大面积。

const readline = require("readline");

// 创建 readline 接口,用于读取标准输入
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

// 监听用户输入行
rl.on("line", (line) => {
    try {
        // 检查输入是否为空或者不包含逗号
        if (!line || !line.includes(",")) {
            throw new Error(); // 输入无效,抛出错误
        }

        // 将输入的字符串拆分为数组,并尝试解析为整数
        const arr = line.split(",").map((ele) => {
            const num = parseInt(ele, 10); // 将字符串转换为整数
            if (isNaN(num)) {
                throw new Error(); // 如果转换失败,抛出错误
            }
            return num; // 返回解析后的整数
        });

        // 检查数组长度是否小于 2
        if (arr.length < 2) {
            throw new Error(); // 输入数组长度不合法,抛出错误
        }

        // 输出计算得到的最大容器面积
        console.log(findMaxArea(arr));
    } catch (err) {
        // 捕获错误并输出 "1" 表示输入错误
        console.error("1");
    }
});

/**
 * 使用双指针法计算最大容器面积
 * @param {number[]} arr 整数数组,表示垂直线的高度
 * @return {number} 最大容器面积
 */
function findMaxArea(arr) {
    let left = 0; // 左指针
    let right = arr.length - 1; // 右指针
    let maxArea = 0; // 初始化最大面积为 0

    // 双指针法查找最大面积
    while (left < right) {
        let width = right - left; // 容器的宽度
        let height = Math.min(arr[left], arr[right]); // 容器的高度(取两条线中较短的那条)
        maxArea = Math.max(maxArea, width * height); // 更新最大面积

        // 移动指针的规则:总是移动较矮的指针,尝试寻找更大的高度
        if (arr[left] < arr[right]) {
            left++; // 左边较矮,移动左指针
        } else {
            right--; // 右边较矮,移动右指针
        }
    }

    return maxArea; // 返回最大面积
}

 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

注意:

如果发现代码有用例覆盖不到的情况,欢迎反馈!会在第一时间修正,更新。
解题不易,如对您有帮助,欢迎点赞/收藏

注:本文转载自blog.csdn.net的CodeClimb的文章"https://blog.csdn.net/CodeClimb/article/details/145143058"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!