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

JavaScriptでn桁を削除した後の最小数


問題

2つの数値を受け取るJavaScript関数を作成する必要があります。これらを、それぞれ1番目と2番目の引数としてmとnと呼びましょう。

この関数のタスクは、数値mからn桁を削除して、数値mがn桁を削除した後に可能な最小の数値になるようにすることです。そして最後に、関数は数字を削除した後に数値mを返す必要があります。

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

の場合
const m = '45456757';
const n = 3;

その場合、出力は-

になります。
const output = '44557';

出力の説明:

可能な限り最小の数にするために、5、6、および7桁を削除しました。

このためのコードは-

になります
const m = '45456757';
const n = 3;
const removeDigits = (m, n, stack = []) => {
   let arr = m.split('').map(Number);
   for(let el of arr){
      while (n && stack.length && el < stack[stack.length - 1]){
         stack.pop();
         --n;
      };
      stack.push(el);
   };
   let begin = stack.findIndex(el => el > 0);
   let end = stack.length - n;
   return (!stack.length || begin == -1 || begin == end) ? "0" : stack.slice(begin, end).join('').toString();
};
console.log(removeDigits(m, n));

コードの説明:

ここでは、スタックを使用した欲張りアルゴリズムを使用して答えを定式化しました。左から右への入力文字列numの値elごとに、スタックからelより大きい最大n個の値を削除した後、elをスタックにプッシュします。

数値の左端の位置は右端の位置よりも価値があるため、この貪欲なアプローチにより、左端の位置が最小の桁で構成され、スタックに残っているものはすべて右の最大の桁になります。ほとんどのポジション。

入力文字列mが処理された後、削除するn桁が残っている場合は、右端のn桁が最大の桁であるため、右端のn桁を削除します。

出力

そして、コンソールの出力は-

になります
44557

  1. JavaScriptで数値の数字を区切る

    ユーザーに入力を提供するJavaScriptプログラムを作成する必要があります。ユーザーが値を入力してボタンを押すと、関数は入力が有効な数値であるかどうかを確認する必要があります。有効な数値である場合、プログラムは数値のすべての桁を個別に画面に出力する必要があります。 例-入力が-の場合 43354 その場合、画面の出力は-になります。 43354 この関数のコードを書いてみましょう- このためのコードは-になります HTML <!DOCTYPE html> <html>    <head>     &nb

  2. JavaScriptの数値の階乗で桁数を返す

    問題 最初で唯一の引数として数値numを受け取るJavaScript関数を作成する必要があります。 この関数は、数値numの階乗の桁数を計算して返す必要があります。 たとえば、関数への入力が-の場合 入力 const num = 7; 出力 const output = 4; 出力の説明 7の値だから! 4桁の5040です。 例 以下はコードです- const num = 7; const countDigits = (num = 1) => {    let res = 0;    while(num >= 2){ &