別の配列を使用して要素を最大化する JavaScript プログラム

WBOY
リリース: 2023-09-05 20:09:11
転載
1162 人が閲覧しました

使用另一个数组最大化元素的 JavaScript 程序

この記事では、別の配列を使用して要素を最大化する JavaScript プログラムを実装します。 2 つの配列があり、2 番目の配列からいくつかの要素を選択し、最初の配列の要素を置き換える必要があります。これから説明する概念を実装する完全なコードを見ていきます。

問題の紹介

この問題では 2 つの配列があり、最初の配列のすべての要素を可能な限り最大にするか、単純に最初の配列のすべての要素の合計を最大にする必要があります。 2 番目の配列から要素を選択できますが、重要なのは、2 番目の配列から要素を選択する必要があるのは 1 回だけであり、その後は別の要素のみを選択できるということです。例えば ​​-###

2 つの配列があります -

リーリー

2 番目の配列の多くの要素は、最初の配列に存在する要素よりも大きいことがわかります。

3 の代わりに 9、2 の代わりに 6、1 の代わりに 5 を選択できます。これにより、最終的な配列は次のようになります -

リーリー

2 つのメソッドが表示されます。どちらも配列と 2 つのポインターをソートすることで実装されていますが、唯一の違いはポインターを選択する場所です。

###方法###

上記の例を見て、最初の配列の小さな要素を 2 番目の配列の最大の要素と交換できることがわかります。

    ステップ 1
  • - まず、両方の配列を昇順で並べ替えてから、2 番目の配列を逆にして降順で並べ替えます。

  • ステップ 2
  • - 両方の配列の最初のインデックスへの 2 つのポインターを維持します。

  • ステップ 3
  • - 最初の要素ポインターは最小の数値を指すため、その数値を 2 番目の配列の最大の数値と交換できます。

  • ステップ 4
  • - 反復ごとに 2 つの配列ポインターを交換し、ポインターをインクリメントします。

  • ステップ 5
  • - 最初の配列の現在のインデックスの要素が 2 番目の配列の要素と比較して大きくなった場合、それ以降のステップを停止できます。

  • ステップ 6
  • - 最後に、配列の要素を出力します。

    ###例### リーリー

    時間と空間の複雑さ
上記のコードの時間計算量は O(N*log(N)) です。ここで、N は指定された配列のサイズであり、ここでの対数因数は配列の並べ替えに使用する並べ替え関数によるものです。

要素を格納するために追加の配列を使用するため、空間の複雑さは O(N) になりますが、その答えを格納するには配列が必要であり、これは追加の空間とみなされる場合もあれば、そうでない場合もあります。

直接仕分け方法

前の方法では、配列の要素をソートしてから 2 つのポインター メソッドを使用しましたが、これを簡単に実行できる直接メソッドがあります -

new キーワードと Array キーワードを使用して、指定された 2 つの配列の合計または長さのサイズを持つ新しい配列を作成します。

  • 指定された 2 つの配列のすべての要素を新しい配列に 1 つずつ埋め込みます。

  • 新しく作成した配列をソートして要素を昇順に並べます。

  • すべての最大の要素は最後に表示され、簡単に入手できます。

  • ###例### リーリー
  • 時間と空間の複雑さ

    上記のコードの時間計算量は O(N*log(N)) です。ここで、N は指定された配列のサイズであり、ここでの対数因数は配列の並べ替えに使用する並べ替え関数によるものです。
要素を格納するために追加の配列を使用するため、空間の複雑さが O(N) になります。

###結論は###

上記のチュートリアルでは、別の配列を使用して要素を最大化する JavaScript プログラムを実装しました。 2 つの配列があり、2 番目の配列からいくつかの要素を選択し、最初の配列の要素を置き換える必要があります。どちらの方法でも並べ替えの概念が使用されていることがわかりました。 2 つのポインターを持つ 1 つのメソッドは O(N*log(N)) 時間と O(1) スペースを必要としますが、もう 1 つのメソッドは同じ時間かかりますが O(N) スペースかかります。

以上が別の配列を使用して要素を最大化する JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート