JavaScript 中具有最小總和的路徑
問題
JavaScript 函式採用二維陣列作為第一個且唯一一個引數。
函式應透過從二維陣列中選取每個行的恰好一個元素尋找路徑,且相鄰行的選取元素不能在同一列。在所有這些路徑中,我們的函式應返回和最小的路徑。
例如,若輸入函式 −
const arr = [ [4, 7, 1], [2, 8, 3], [5, 6, 9] ]
則輸出應為 −
const output = 9;
輸出說明
因為所有有效路徑為 −
| 4, 8, 9 | 4, 8, 6 | 4, 3, 6 | 4, 3, 5 |
| 7, 2, 6 | 7, 2, 9 | 7, 3, 6 | 7, 3, 5 |
| 1, 2, 6 | 1, 2, 9 | 1, 8, 9 | 1, 8, 5 |
而在所有這些路徑中,[1, 2, 6] 有最小的和 9。
示例
程式碼如下 −
const arr = [
[4, 7, 1],
[2, 8, 3],
[5, 6, 9]
]
const minimumPathSum = (arr = []) => {
let first = [0, null];
let second = [0, null];
for(let row = arr.length - 1; row >= 0; row--){
let curr1 = null;
let curr2 = null;
for(let column = 0; column < arr[row].length; column++){
let currentSum = arr[row][column];
if(column !== first[1]){
currentSum += first[0];
}else{
currentSum += second[0];
};
if(curr1 === null || currentSum < curr1[0]){
curr2 = curr1;
curr1 = [currentSum, column];
}else if(curr2 === null || currentSum < curr2[0]){
curr2 = [currentSum, column];
};
};
first = curr1;
second = curr2;
};
return first[0];
};
console.log(minimumPathSum(arr));輸出
控制檯的輸出將為 −
9
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP