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

JavaScriptの制限内の範囲の合計を持つペアをカウントする


範囲の合計

範囲の合計rangeSum(i、j)は、インデックスiとj(i≤j)の間の配列内の要素の合計として定義されます。

問題

最初の引数として整数の配列arrを取り、2番目と3番目の要素として上と下の2つの数値を受け取るJavaScript関数を作成する必要があります。

この関数は、範囲[上、下](両方を含む)の間にある範囲の合計の数を返すことになっています。

たとえば、関数への入力が-

の場合
const arr = [1, 4, 3];
const upper = 5;
const lower = 2;

その場合、出力は-

になります。
const output = 3;

このためのコードは-

になります
const arr = [1, 4, 3];
const upper = 5;
const lower = 2;
const countRangeSum = (arr = [], lower, upper) => {
   const sums = [0];
   let res = 0;
   let last = 0;
   let firstge = value => {
      let l = 0, r = sums.length, m;
      do {
         m = Math.floor((r + l) / 2);
         sums[m] < value ? l = m : r = m;
      } while (r >= l + 2);
      while (r > 0 && sums[r - 1] >= value ) {
         r -= 1;
      }
      return r;
   };
   arr.forEach(num => {
      last += num;
      res += firstge(last - lower + 1) - firstge(last - upper);
      sums.splice(firstge(last), 0, last);
   });
   return res;
};
console.log(countRangeSum(arr, lower, upper));

出力

コンソールの出力は-

になります
3

  1. JavaScriptで一致する部分文字列を数える

    問題 最初の引数として文字列strを取り、2番目の引数として文字列の配列arrを受け取るJavaScript関数を作成する必要があります。この関数は、文字列strのサブシーケンスであるarr[i]の数をカウントして返す必要があります。 たとえば、関数への入力が 入力 const str = 'klmnop'; const arr = ['k', 'll', 'klp', 'klo']; 出力 const output = 3; 出力の説明 必要な文字列は「k」、「klp」、「klo」であるため 例

  2. JavaScriptで合計ペアをマップする

    問題 insertメソッドとsumメソッドを使用してMapSumクラスを実装する必要があります。メソッドinsertの場合、(文字列、整数)のペアが与えられます。文字列はキーを表し、整数は値を表します。キーがすでに存在する場合は、元のキーと値のペアが新しいキーに上書きされます。 メソッドsumの場合、プレフィックスを表す文字列が与えられ、キーがプレフィックスで始まるすべてのペアの値の合計を返す必要があります。 例 以下はコードです- class Node {    constructor(val) {       this.num = 0