日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

求最大和子數(shù)組大小的 JavaScript 程序是編程領(lǐng)域中的一個(gè)常見問題,尤其是在 Web 開發(fā)中。問題陳述涉及在給定的一維整數(shù)數(shù)組中查找具有最大總和的連續(xù)子數(shù)組。這也稱為最大子數(shù)組問題。解決這個(gè)問題在各種應(yīng)用中都非常有用,例如財(cái)務(wù)分析、股票市場(chǎng)預(yù)測(cè)和信號(hào)處理。

在本文中,我們將看到算法以及使用 JavaScript 實(shí)現(xiàn)最大總和的子數(shù)組的大小。我們將首先詳細(xì)討論該問題,然后繼續(xù)使用 JavaScript 編程語(yǔ)言開發(fā)逐步解決方案。那么讓我們開始吧!

問題陳述

給定一個(gè)整數(shù)數(shù)組,我們必須找到具有最大總和的子數(shù)組的長(zhǎng)度。

例如,假設(shè)我們有一個(gè)整數(shù)數(shù)組:[1, -2, 1, 1, -2, 1],最大子數(shù)組為 [1, 1],總和為 2。我們可以通過用結(jié)束索引減去起始索引并加 1 來求出該子數(shù)組的長(zhǎng)度。在本例中,起始索引為 0,結(jié)束索引為 1,因此子數(shù)組的長(zhǎng)度為 2。

另一個(gè)例子是所有負(fù)整數(shù)的數(shù)組:[-2, -5, -8, -3, -1, -7]。在這種情況下,最大子數(shù)組將為 [-1],總和為 -1。由于所有元素均為負(fù)數(shù),因此絕對(duì)值最小的子數(shù)組的總和最大。因此,子數(shù)組的長(zhǎng)度為-1。

需要注意的是,可以有多個(gè)最大子數(shù)組,每個(gè)子數(shù)組的總和相同。然而,我們只需要找到其中之一。

算法

第 1 步

我們首先初始化四個(gè)變量:“maxSum”為“-Infinity”,“currentSum”為“0”,“start”為“0”,end 為“0”。我們將使用“maxSum”來跟蹤到目前為止我們看到的最大總和,“currentSum”來計(jì)算我們當(dāng)前迭代的子數(shù)組的總和,“start”來跟蹤子數(shù)組的起始索引,以及’end’ 來跟蹤子數(shù)組的結(jié)束索引。

第 2 步

然后我們使用“for”循環(huán)遍歷數(shù)組。對(duì)于數(shù)組中的每個(gè)元素,我們將其添加到“currentSum”中。如果 ‘currentSum’ 大于 ‘maxSum’,我們將 ‘maxSum’ 更新為 ‘currentSum’ 并將 ‘end’ 設(shè)置為當(dāng)前索引。

第 3 步

接下來,我們使用 while 循環(huán)來檢查“currentSum”是否小于“0”。如果是,我們從“currentSum”中減去“start”處的值,并將“start”加1。這確保了我們始終擁有數(shù)組的連續(xù)子集。

第 4 步

最后,我們檢查“currentSum”是否等于“maxSum”以及當(dāng)前子數(shù)組的大小是否大于前一個(gè)子數(shù)組。如果是,我們將“end”更新為當(dāng)前索引。

第 5 步

該算法的時(shí)間復(fù)雜度為 O(n),空間復(fù)雜度為 O(1),對(duì)于該問題來說是最優(yōu)的。

示例

下面的 JavaScript 程序旨在解決使用 start 和 end 兩個(gè)指針在整數(shù)數(shù)組中查找總和最大的連續(xù)子數(shù)組的問題。該算法將最大總和初始化為負(fù)無(wú)窮大,將當(dāng)前總和初始化為零,并將起始索引和結(jié)束索引初始化為零。它將每個(gè)元素添加到當(dāng)前總和中,如果當(dāng)前總和大于最大總和,則更新最大總和和結(jié)束索引。它從子數(shù)組的開頭刪除元素,直到當(dāng)前總和不再為負(fù),然后如果當(dāng)前總和等于最大總和并且子數(shù)組的長(zhǎng)度大于前一個(gè)子數(shù)組的長(zhǎng)度,則更新結(jié)束索引。最后,它通過從結(jié)束索引減去開始索引并加 1 來返回最大子數(shù)組的長(zhǎng)度。

function maxSubarraySize(arr) {
   let maxSum = -Infinity;
   let currentSum = 0;
   let start = 0;
   let end = 0;
   for (let i = 0; i < arr.length; i++) {
      currentSum += arr[i];
      if (currentSum > maxSum) {
         maxSum = currentSum;
         end = i;
      }
      while (currentSum < 0) {
         currentSum -= arr[start];
         start++;
      }
      if (currentSum === maxSum && i - start > end - start) {
         end = i;
      }
   }
   return end - start + 1;
} 
// Example usage:
const arr = [1, -2, 1, 1, -2, 1];
console.log("Array:", JSON.stringify(arr));
const size = maxSubarraySize(arr);
console.log("Size of the Subarray with Maximum Sum:", size);

登錄后復(fù)制

讓我們通過一些示例查看輸出,以便更好地理解。

示例 1

輸入 – 給定一個(gè)整數(shù)數(shù)組,a[]= {1, -2, 1, 1, -2, 1}

輸出??2

說明 – 具有連續(xù)元素且最大總和為 {1, 1} 的子數(shù)組。因此,長(zhǎng)度為2。

示例 2

輸入 – 給定所有負(fù)整數(shù)的數(shù)組,a[]= {-2, -5, -8, -3, -1, -7}

輸出-1

解釋 – 在這種情況下,最大子數(shù)組將為 [-1],總和為 -1。因此,子數(shù)組的長(zhǎng)度為-1。

結(jié)論

在編程中使用數(shù)組時(shí),具有最大和的子數(shù)組的大小是一個(gè)常見問題。解決此問題的算法涉及迭代數(shù)組并跟蹤當(dāng)前總和以及迄今為止看到的最大總和。通過在 JavaScript 中實(shí)現(xiàn)此算法,我們可以編寫一個(gè)程序,該程序可以有效地查找任何給定整數(shù)數(shù)組的最大總和的子數(shù)組的大小。

以上就是JavaScript 程序計(jì)算具有最大和的子數(shù)組的大小的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.92cms.cn其它相關(guān)文章!

分享到:
標(biāo)簽:大和 大小 數(shù)組 程序 計(jì)算
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定