C解法

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

JS解法

具体步骤:
输入处理:

通过 readline 模块从标准输入读取一行数据。
将输入的字符串按空格分割成数字数组 nums。
前缀和与后缀和计算:

前缀和 (prefixSum): prefixSum[i] 表示从数组开始到第 i 个元素的总和。
后缀和 (suffixSum): suffixSum[i] 表示从第 i 个元素到数组末尾的总和。
计算最大差值:

遍历所有可能的分割点 i,计算 prefixSum[i] 和 suffixSum[i + 1] 的差值,取其绝对值。
找出所有差值中的最大值。
输出结果:

输出最大差值

const readline = require("readline");

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

// 监听输入事件,处理输入数据
rl.on("line", (line) => {
    const nums = line.split(" ").map(Number);  // 将输入按空格分割,并转换为数字数组
    if (nums.length > 1) {  // 当数组长度大于1时才进行处理
        console.log(maxDifference(nums));  // 计算并输出最大差值
    }
});

/**
 * 计算数组分割后的最大绝对差值
 * 
 * @param {number[]} arr - 输入的整数数组
 * @returns {number} - 返回最大差值
 */
function maxDifference(arr) {
    const n = arr.length;
    const prefixSum = new Array(n).fill(0);  // 初始化前缀和数组
    const suffixSum = new Array(n).fill(0);  // 初始化后缀和数组

    // 计算前缀和
    prefixSum[0] = arr[0];
    for (let i = 1; i < n; i++) {
        prefixSum[i] = prefixSum[i - 1] + arr[i];  // 当前前缀和 = 前一个前缀和 + 当前元素
    }

    // 计算后缀和
    suffixSum[n - 1] = arr[n - 1];
    for (let i = n - 2; i >= 0; i--) {
        suffixSum[i] = suffixSum[i + 1] + arr[i];  // 当前后缀和 = 后一个后缀和 + 当前元素
    }

    // 计算最大差值
    let maxDiff = 0;
    for (let i = 0; i < n - 1; i++) {
        const diff = Math.abs(prefixSum[i] - suffixSum[i + 1]);  // 计算当前分割的绝对差值
        maxDiff = Math.max(maxDiff, diff);  // 更新最大差值
    }

    return maxDiff;  // 返回最大差值
}

 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/145143181"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!