首頁 >後端開發 >php教程 >。最大數量

。最大數量

DDD
DDD原創
2024-09-19 06:21:07585瀏覽

. Largest Number

179。最大的數字

難度:

主題:陣列、字串、貪婪、排序

給定一個非負整數 nums 列表,將它們排列成最大的數字並傳回它。

由於結果可能會很大,所以需要傳回字串而不是整數。

範例1:

  • 輸入: nums = [10,2]
  • 輸出:「210」

範例2:

  • 輸入: nums = [3,30,34,5,9]
  • 輸出:「9534330」

約束:

  • 1
  • 0 9

解:

我們需要根據數字的串聯結果來比較它們。對於兩個數字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 。乙和乙。 a.
  2. 比較邏輯:strcmp($order2, $order1) 確保我們依照連接的字串得到降序排列。
  3. 邊緣情況處理:如果產生的連接字串的第一個字元是 0,我們傳回“0”,當陣列的所有元素都為零時會發生這種情況。
  4. 時間複雜度:對數字進行排序需要 O(n log n),連接它們需要 O(n),其中 n 是輸入數組中的數字數量。

此解決方案有效地處理約束並以字串形式傳回最大可能的數字。

聯絡連結

如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!

如果您想要更多類似的有用內容,請隨時關注我:

  • 領英
  • GitHub

以上是。最大數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn