Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

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

  1. 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

  2. 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>