JavaScriptで合計が最小のパス
問題
最初で唯一の引数として数値の2次元配列を受け取るJavaScript関数。
この関数は、各行から正確に1つの要素を選択することにより、2次元配列からパスを見つける必要があり、隣接する行から選択された2つの要素が同じ列に存在してはなりません。これらすべてのパスのうち、関数は最小の合計を持つパスの合計を返す必要があります。
たとえば、関数への入力が-
の場合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
-
JavaScriptでのConstとLet。
Constとletは、ブロックスコープの変数を宣言するためにES2015で導入されました。 letを使用して宣言された変数は再割り当てできますが、constを使用して宣言された場合は再割り当てできません。 以下は、JavaScriptでletとconstを示すコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="wi
-
JavaScript配列を条件付きで結合しますか?
以下は、JavaScriptの条件を持つJavaScript配列のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>