。最大の数

DDD
DDDオリジナル
2024-09-19 06:21:07585ブラウズ

. Largest Number

179.最大数

難易度:

トピック: 配列、文字列、貪欲、並べ替え

非負の整数 num のリストが与えられた場合、それらが最大の数を形成するように配置して、それを返します。

結果は非常に大きくなる可能性があるため、整数ではなく文字列を返す必要があります。

例 1:

  • 入力: 数値 = [10,2]
  • 出力: "210"

例 2:

  • 入力: 数値 = [3,30,34,5,9]
  • 出力: "9534330"

制約:

  • 1
  • 0 9

解決策:

数値を連結した結果に基づいて比較する必要があります。 2 つの数 a と b について、ab (a と b を連結したもの) と ba (b と a を連結したもの) を比較し、どちらが大きい数になるかに基づいて順序を決定します。

アプローチ:

  1. カスタム並べ替え: 連結された結果を比較して数値を並べ替えるカスタム コンパレータ関数を実装します。
  2. エッジケース: 並べ替え後の最大の数値が 0 の場合、すべての数値はゼロでなければならないため、結果は「0」になります。
  3. 連結: 並べ替え後、数値を連結して最終結果を形成します。

このソリューションを PHP で実装してみましょう: 179。最大数

<?php
/**
 * @param Integer[] $nums
 * @return String
 */
function largestNumber($nums) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Example usage:
$nums1 = [10, 2];
echo largestNumber($nums1);  // Output: "210"

$nums2 = [3, 30, 34, 5, 9];
echo largestNumber($nums2);  // Output: "9534330"
?>

説明:

  1. usort($nums, $comparator): カスタム コンパレータを使用して配列を並べ替えます。数値 a と b の各ペアについて、連結された文字列 a を比較します。 b と b 。 a.
  2. 比較ロジック: strcmp($order2, $order1) は、連結された文字列に基づいて降順を取得することを保証します。
  3. エッジ ケースの処理: 結果の連結文字列の最初の文字が 0 の場合、「0」を返します。これは、配列のすべての要素が 0 の場合に発生します。
  4. 時間計算量: 数値の並べ替えには O(n log n) がかかり、数値の連結には O(n) がかかります。ここで、n は入力配列内の数値の数です。

このソリューションは制約を効率的に処理し、可能な最大の数値を文字列として返します。

連絡先リンク

このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!

このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:

  • LinkedIn
  • GitHub

以上が。最大の数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。