JavaScript 中最大分割槽平均值總和
問題
我們需要編寫一個 JavaScript 函式,此函式的第一個引數是數字陣列 arr,第二個引數是數字 num,且 (num <= arr 的大小)。
我們的函式應將陣列 arr 分成至多 num 個相鄰的(非空)組,並且不丟棄任何元素。
在所有此類分割槽中,我們的函式應選擇一個分割槽,其中所有組的平均值總和最大。
最後,我們應返回此最大總和。
例如,如果函式的輸入為
輸入
const arr = [10, 2, 3, 4, 10]; const num = 3;
輸出
const output = 23;
輸出說明
因為如果我們這樣對陣列分割槽 −
[10], [2, 3, 4], [10]
平均值總和將為 −
10 + (9)/3 + 10 = 23
這是所有分割槽中最大的。
示例
程式碼如下 −
const arr = [10, 2, 3, 4, 10];
const num = 3;
const greatestSum = (arr, num) => {
const sum = (arr = []) => arr.reduce((acc, num) => acc + num, 0)
let matrix = new Array(num + 1).fill(0).map(() => new Array(arr.length + 1).fill(0))
for (let index = arr.length; index >= 0; index--) {
const current = new Array(num + 1).fill(0).map(() => new Array(arr.length + 1).fill(0))
for (let currentK = num; currentK >= 0; currentK--) {
for (let count = arr.length - 1; count >= 0; count--) {
if (index === arr.length && currentK === num) {
current[currentK][count] = 0
} else if (index < arr.length && currentK < num) {
current[currentK][count] = Math.max(
matrix[currentK][count + 1],matrix[currentK + 1][0] + sum(arr.slice(index - count, index + 1)) / (count + 1) )
} else {
current[currentK][count] = -Infinity
}
}
}
matrix = current
}
return matrix[0][0]
}
console.log(greatestSum(arr, num));輸出
23
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP