数组中出现次数超过一半的数字
与《【169】多数元素》这个是一样的
题目
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2
限制:
1 <= 数组长度 <= 50000
注意:本题与主站 169 题相同:https://leetcode-cn.com/problems/majority-element/
Related Topics
数组
哈希表
分治
计数
排序
👍 376
👎 0
class Solution {
public int majorityElement(int[] nums) {
}
}
实现1
import java.util.Arrays;
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
return nums[nums.length/2];
}
}
解答成功:
执行耗时:2 ms,击败了58.32% 的Java用户
内存消耗:47.8 MB,击败了5.05% 的Java用户
实现2
class Solution {
public int majorityElement(int[] nums) {
int res = 0;
int count =0;
for (int n:nums){
if (count==0 && n!=res){
res = n;
count++;
}
else if (n==res){
count++;
}
else {
count--;
}
}
return res;
}
}
结果
解答成功:
执行耗时:1 ms,击败了99.60% 的Java用户
内存消耗:47.5 MB,击败了16.39% 的Java用户