LeetCode の剣はオファー 39 を指します。配列内に半分以上出現する数値 (Java 実装)

剣はオファー 39 を指しています。配列の半分以上の時間に出現する数字です。

配列内に、配列の長さの半分を超える数値があります。この数値を見つけてください。

配列は空ではなく、指定された配列には常に大部分の要素が存在すると想定できます。

例 1:

输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2

制限:

1 <= 数组长度 <= 50000

問題解決のアイデア:

  • 質問では、半分以上の確率で何かが表示されるはずです。
  • 次に、この配列を最初にソートします
  • 真ん中の数字はモードです
  • 添字の要素を返すだけです
class Solution {
    
    
    public int majorityElement(int[] nums) {
    
    
        Arrays.sort(nums);//题目说必然有一个数超过一半
        return nums[nums.length/2];//所以排序过后,中间那个数必然是那个众数
    }
}

おすすめ

転載: blog.csdn.net/qq_44243059/article/details/125898451