剣はオファー 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];//所以排序过后,中间那个数必然是那个众数
}
}