[boj node.js]最低10818回、最大JavaScript

8074 ワード

質問する
N個の整数を与える.このとき、最高価格と最低価格を求めるプログラムを作成してください.
入力
第1行は整数の個数N(1≦N≦1000000)を与える.2行目はN個の整数をスペースで区切ります.すべての整数は-10000以上、1000000以下です.
しゅつりょく
1行目に与えられる整数N個の最切り上げと最切り上げは、スペースで区切られて出力される.
入力例1
5
20 10 35 30 7
サンプル出力1
7 35

説明する


2つの解題方法を考えた.
  • 配列のapiの1つにソートされたsort()は、最後のカウントと最初のカウントを用いて1番目、
  • である.
  • の2番目はMathです.max()とMath.min()のパラメータで「Spread Operator」を使用して配列を渡します.
    =>2つ目の方が好きだと思い、そのまま提出しましたが、実行中にエラーが発生しました.
  • const fs = require('fs');
    const input = fs.readFileSync('dev/stdin').toString().trim().split('\n');
    const arr = input[1].split(' ').map(v=>+v);
    const maxValue = Math.max(...arr);
    const minValue = Math.min(...arr);
    console.log(`${minValue} ${maxValue}`) 


    テスト中によく動いているのに、なぜ運転時に行くのですか?
    本当に知らなかったので、白俊に質問文を書いて、答えを知りました.テスト例で与えられたよりも大きな配列がある場合、Math.min, Math.maxで間違いがあったようです.バックグラウンドでテストを行うときにどれだけ値を入力するかはわかりませんが、Mathから10⁷までの配列しか必要ありません.min, Math.maxが使えるようです.(出典:Stack Overflow)
    だから結局は最初の考えで解決しなければならない.
    const fs = require('fs');
    const input = fs.readFileSync('dev/stdin').toString().trim().split('\n');
    const n = input[0];
    const arr = input[1].split(' ').map(v=>+v).sort((a,b) => a - b);
    console.log(`${arr[0]} ${arr[n-1]}`);
    アルゴリズムを解き直す過程で、以前学んだことを思い出したが、曖昧なものを探しているときに、どういう意味か理解できないことが多い.JavaScriptを学ぶ日です.