AcWing 797. 差分 ( JavaScript )
原题链接
简单
作者:
gaobowen
,
2019-11-13 15:55:29
,
所有人可见
,
阅读 904
let insertlr = (dArr, l, r, c) => {
dArr[l] += c;
dArr[r + 1] -= c;
}
let diffArr = [];
let createDiffArr = (arr) => {
// 多开数组处理边界问题
diffArr = new Array(arr.length + 1).fill(0);
for (let i = 1; i < arr.length; i++) {
// 第一种,使用 定义构造 差分数组
diffArr[i] = arr[i] - arr[i - 1];
// 第二种,使用 操作函数
// insertlr(diffArr, i, i, arr[i]);
}
}
var buf = '';
process.stdin.on('readable', function () {
var chunk = process.stdin.read();
if (chunk) buf += chunk.toString();
});
let getInputArgs = line => {
return line.split(' ').filter(s => s !== '').map(x => parseInt(x));
}
process.stdin.on('end', function () {
let n = 0, m = 0;
buf.split('\n').forEach(function (line, lineIdx) {
if (lineIdx === 0) {
let firstline = getInputArgs(line);
n = firstline[0];
m = firstline[1];
}
else if (lineIdx === 1) {
let arr = getInputArgs(line);
arr.unshift(0);
createDiffArr(arr);
}
else {
if (m > 0) {
let op = getInputArgs(line);
insertlr(diffArr, ...op);
}
m--;
if (m === 0) {
diffArr.forEach((x, i) => {
if (i > 0) diffArr[i] += diffArr[i - 1];
});
diffArr.shift();
diffArr.pop();
console.log(diffArr.join(' '));
}
}
});
});
pop那里好像不对,当取不了最后边界时会出错