Кем?)
Это не привычка, а необходимость (это не веб-разработка).
Я слежу всегда за этим, разумеется.
2. Я оптимизировал скорость в ущерб целостности входных данных (вх.массив), т.к. мне больше и не требуется для данной задачи: нужно пройти все тесты за минимально возможное время.
Со всем согласен, но очень не люблю копировать лишний раз (и тратить время+оперативу) тогда, когда использование входных данных - одноразовое/однократное. :)
var del;
if (!del) { del = '_//_'; }
var del = '_//_';
?arr = arr.join(del).toLowerCase().split(del);
= [...arr]; // copy array values
= arr; // copy array address
result.length = ls.length + 1;
$ node test.js
first for: 141.143ms
----------------------
second for: 1.455s
(() => {
function partsSums1(ls) {
const result = new Array(ls.length + 1);
result[ls.length] = 0;
for (let i = ls.length - 1; i > -1; i--) {
result[i] = result[i + 1] + ls[i];
}
return result;
}
function partsSums2(ls) {
if(ls.length==0) return [0];
const result=[];
result[ls.length] = 0;
let i=ls.length-1;
while(i!=-1)
result[i] = result[i+1]+ls[i--];
return result;
}
const testArr = [];
for(let i = 0; i < 10_000_000; i++) {
testArr.push(~~(Math.random() * 100));
}
console.time('first for');
partsSums1(testArr);
console.timeEnd('first for');
console.log('----------------------')
console.time('second for');
partsSums2(testArr);
console.timeEnd('second for');
})()
function partsSums(ls) {
ls.unshift(0);
let sum = ls.reduce((p, c) => p + c, 0);
return ls.map(v => sum = sum - v);
}
И мне нет.