ソートされた 2 つの配列を効率的にマージするにはどうすればよいですか?
Nov 28, 2024 pm 03:17 PM2 つのソートされた配列を効率的にマージする方法
最近のインタビューで、2 つのソートされた配列を 1 つのソートされた配列にマージするように求められました。要素を比較して新しい配列に追加するソリューションを提供しました。このアプローチは正しいですが、パフォーマンスを向上させるために最適化することができます。
より効率的なソリューションは次のとおりです:
public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { answer[k++] = a[i] < b[j] ? a[i++] : b[j++]; } while (i < a.length) answer[k++] = a[i++]; while (j < b.length) answer[k++] = b[j++]; return answer; }
最適化されたソリューションでは、単一のループを使用して両方の配列を反復処理し、マージします。それらを回答配列に追加します。三項演算子 (? :) を使用すると、追加の条件ステートメントを必要とせずに、より小さい要素を決定し、それを回答配列に追加できます。
さらに、k を使用して、その後、回答配列のインデックスをインクリメントします。各要素が追加され、コードが簡素化され、操作の数が削減されます。
元のソリューションと比較して、この最適化されたバージョンはより簡潔で、より少ない条件チェックで実行されます。効率が向上します。
以上がソートされた 2 つの配列を効率的にマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?

2025年のトップ4 JavaScriptフレームワーク:React、Angular、Vue、Svelte

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?

高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題修正
