次のような簡単な問題です:
サイズ n の配列 nums を指定すると、多数決の要素を返します。
多数要素とは、⌊n / 2⌋ 回以上出現する要素です。大部分の要素が常に配列内に存在すると仮定することができます。
例 1:
入力: 数値 = [3,2,3]
出力: 3例 2:
入力: 数値 = [2,2,1,1,1,2,2]
出力: 2制約:
n == nums.length
1 -109
一見すると、地図を作成してから、最もよく表示される地図を集めることを考えるでしょう。
よく考えたら、並べ替えて最も多く表示されるものを取得できればそれで十分です。
そして、さらに簡単な方法があります。説明を注意深く読めば、多数要素とは、配列の半分以上に出現する要素であることが理解できるでしょう。
それを念頭に置いて、並べ替えて中央のインデックスを取得すれば、問題は解決します。
class Solution { public int majorityElement(int[] nums) { // sort Arrays.sort(nums); // if by majority element it means that appears more than half of nums size // then picking the middle element would be the one that's a majority element return nums[nums.length / 2]; } }
実行時間: 4 ミリ秒。Majority Element の Java オンライン送信の 54.53% よりも高速です。
メモリ使用量: 53.5 MB、Majority Element の Java オンライン送信の 9.23% 未満。
—
それでおしまい!他に何か議論したいことがあれば、お気軽にコメントしてください。何か見逃した場合はお知らせください。適宜更新します。
次の投稿まで! :)
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3