let deal = function (arr) { let stack = [] arr.map(i => { console.info(stack) if (stack.length == 0) { stack.push(i) } else { // duibi tail he i let t = stack[stack.length-1] if (t * i > 0) {// 同方向 stack.push(i) } elseif (t * i <0) {//不同方向 if (t <0 && i >0){ stack.push(i) } elseif (t> 0 && i <0){ //要撞 let value = t + i value = value > 0 ? t:i stack[stack.length-1] = value //维持前面稳定 let change = stack.length > 1 while(change) { t = stack.pop(); tp = stack.pop();
if (tp > 0 && t <0) { value = tp + t value = value > 0 ? tp:t stack.push(value) } else { change = false stack.push(tp) stack.push(t) }}}}} }) return stack }