JavaScriptデジタルスキーム

3662 ワード

理解どおりに書く(誤りの可能性が高い)


ディジタルシステム


JavaScriptで数字を表す場合、64ビット浮動小数点で表します.符号ビット(63ビット)が1の場合、その数字は負数となる.次の8ビット(63位から52位)は指数値eを表す.最後に、残りの52ビットは点数を表す.

セキュリティの最小値と最大値を設定する理由


JavaScriptでアルゴリズムの問題を解く場合でも、任意の演算を実行するコードを解く場合でも.
JavaScriptで正確に表現できる数値の範囲を超えた場合.
スタックオーバーフローまたはエラーが発生する可能性があります.
この場合、番号生成器にはMIN_SAFE_INTEGERMAX_SAFE_INTEGERが存在する.
したがって、安全範囲を超えている場合は、クリップ方式を使用します.

Number


まず、mdnの公式ドキュメントには、
The Number constructor contains constants and methods for working with numbers.
ディジタルジェネレータには、ディジタルを利用できる定数と方法が含まれます.に表示されます.
また、番号.MIN SAFE INTERGER mdn公式ドキュメント表示:
MIN_SAFE_INTEGER is a static property of Number.
MIN SAFE INTEGERは、数値の静的属性として表示されます.
したがって番号付けします.MIN SAFE INTEGERは数字の方法ではありません
数字の定数と見なすことができる.

実際の使用


toyアルゴリズム問題
LSCS:所与の配列の連続する部分の配列*の和を求める時、その中の最大の値
連続部分配列:配列[1,2,3]の連続部分配列は[1],[1,2],[1,2,3],[2,3],[2,3]である.
// dynamic programming: O(N)
const LSCS = function (arr) {
  let subArrSum = 0; // 연속 배열의 합
  let max = Number.MIN_SAFE_INTEGER; // 안전범위 설정후 정답의 후보를 저장
  for (let i = 0; i < arr.length; i++) {
    subArrSum = subArrSum + arr[i];
    if (subArrSum > max) max = subArrSum;

    // 연속된 구간의 합이 음수인 경우,
    // 해당 부분은 버리고 다시 시작해도 된다.
    if (subArrSum < 0) {
      subArrSum = 0;
    }
  }

  return max;
};