亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

找到最小初始值,使得總和始終為 1 或更大

找到最小初始值,使得總和始終為 1 或更大

狐的傳說 2023-09-28 09:49:46
給定一個整數數組,找到起始的最小數字 X,使得數組元素與 X 相加,總和始終大于或等于 1如果給定數組是 {-2, 3, 1, -5} 例如,在上面的數組中,X 應該是 4解釋:如果我們從 4 開始,然后添加第一個數字 -2,數組總和變為 4 + (-2) = 2 (>0) 現在將下一個元素 3 添加到當前總和 2,2+ 3 = 5 (>0)將下一個元素 1 添加到新的和 5 中得到 5 + 1 = 6 (>0)將最后一個元素 -5 添加到新的和 6 中得到 6 + (-5) = 1,這又更大比零。到目前為止,這是我的代碼,但它不起作用:function minX(arr) {    var sum = 0    var runningSum= 0    for (var i=0; i < arr.length; i++){        if ((arr[i] + sum) <= 1){            var diff = arr[i] + sum            var someNumber = 1 - diff            sum = someNumber + sum        }        runningSum += arr[i]    }  return sum}
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

首先迭代數組,同時跟蹤迄今為止找到的最低總和。最后,結果是一個數字,將其與找到的最小總和相加得到 1:


const minX = (arr) => {

  let recordMin = 0;

  let sum = 0;

  for (const elm of arr) {

    sum += elm;

    recordMin = Math.min(recordMin, sum);

  }

  return -recordMin + 1;

};


console.log(minX([-2, 3, 1, -5]));

console.log(minX([-2, 3, 1, -5, 999]));


查看完整回答
反對 回復 2023-09-28
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

獲取數組元素的總和,例如,使用Array.prototype.reduce

arr.reduce((a, b) => a + b, 0);

然后,對其取負并加 1。所以,總而言之:

function minX(arr) {
    return -arr.reduce((a, b) => a + b, 0) + 1;
}

或者,簡化一下:

function minX(arr) { 
   return arr.reduce((a, b) => a - b, 1);
}


查看完整回答
反對 回復 2023-09-28
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

您可以獲取想要的結果并減去數組的所有值。


function minX(array) {

    return array.reduce((s, v) => s - v, 1);

}


console.log(minX([-2, 3, 1, -5])); // 4


查看完整回答
反對 回復 2023-09-28
  • 3 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號