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");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
const nums = line.split(" ").map(Number);
if (nums.length > 1) {
console.log(maxDifference(nums));
}
});
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"}">
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
注意:
如果发现代码有用例覆盖不到的情况,欢迎反馈!会在第一时间修正,更新。
解题不易,如对您有帮助,欢迎点赞/收藏
评论记录:
回复评论: