632。 K リストから要素をカバーする最小範囲
難易度: 難しい
トピック: 配列、ハッシュ テーブル、Greedy、スライディング ウィンドウ、ソート、ヒープ (優先キュー)
非減少順でソートされた整数のリストが k 個あります。 k 個のリストのそれぞれから少なくとも 1 つの数値を含む最小範囲を見つけます。
b - a または a
例 1:
例 2:
制約:
解決策:
min-heap (または優先キュー) を使用して、スライディング ウィンドウを維持しながら各リストの最小要素を追跡し、各リストから少なくとも 1 つの要素を含む最小範囲を見つけることができます。
このソリューションを PHP で実装してみましょう: 632。 K リストから要素をカバーする最小範囲
説明:
- ヒープの初期化:
- 初期ヒープには、各リストの最初の要素が含まれます。また、最初の要素のうち最大の要素も追跡します。
- ヒープの処理:
- ヒープから最小限の要素を抽出し、同じリストから次の要素を追加して範囲の拡張を試みます (可能な場合)。
- ヒープに新しい要素を追加した後、新しい要素の方が大きい場合は maxValue を更新します。
- maxValue と minValue の差が以前に記録された範囲よりも小さい場合は常に、最小範囲を更新します。
- 終了:
- すべてのリストを範囲内に含めることはもうできないため、リストの要素がなくなるとループは停止します。
複雑さの分析
このソリューションは、k 個の並べ替えられたリストのそれぞれから、少なくとも 1 つの数値を含む最小範囲を効率的に見つけます。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が。 K リストから要素をカバーする最小範囲の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。