プログラマ[LEVEL 1]の最小数JavaScriptを削除


最小数を削除
問題の説明
整数の配列を保存し、arrから最小数の配列を削除する関数を返します.解決策を完了してください.ただし、返される配列が空の配列の場合は、配列に-1を入力して返します.たとえばarrが[4,3,2,1]の場合は[4,3,2]を返し、[10]の場合は[1]を返します.
せいげんじょうけん
  • arrは、長さが1より大きい配列である.
  • インデックスi,jについて、i≠jの場合、arr[i]≠arr[j]である.
  • に答える
    この問題は,受信したパラメータとしての配列をsort()降順に並べ替え,最後の要素を除去する考えで符号化され,以下に示す.
    <script>
       function solution(arr){
          if(arr.length ===1){
             return [-1];
          }
          arr.sort((a,b) => b-a).pop();
          return arr;
       }
    </script>
    上のコードはコンソールで正常に動作していますが、コミット後に失敗しています.
    何か問題があるのを見て、問題に惑わされていることに気づいた.
    出力例を見てソートしたが,問題のどこでもソートを要求する一言もなかった.
    すなわちarrに[5,7,1,3]が付与されている場合、1を削除して[5,7,3]を出力する必要がある.
    私が書いたコードは[5,7,3]ではなく[3,5,7]です.
    ソートしない場合はarr配列で最小値を検索し、その位置から削除します.
    まず最小値を見つけます
    <script>
       function solution(arr){
          if(arr.length ===1){
             return [-1];
          }
          Math.min(...arr);
       }
    </script>
    Math.minを使用してarrの最小値を読み出します.
    次に、要素のインデックスを読み込み、削除します.
    <script>
       function solution(arr){
          if(arr.length ===1){
             return [-1];
          }
          arr.splice(arr.indexOf(Math.min(...arr),1);
       }
    </script>
    に感銘を与える
    I/Oの例にだまされないように、
  • の問題から目的を見つけましょう.