给定一个大小为 n
的数组 nums
,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋
的元素。
我的代码实现为:
class Solution {
public int majorityElement(int[] nums) {
int tag = 0;
int count = 1;
Arrays.sort(nums);
for (int j = 0; j < nums.length; j++) {
if (tag == nums[j]){
continue;
}
tag = nums[j];
for (int i = j+1; i < nums.length ; i++) {
if (tag == nums[i]){
count++;
}
}
if (count > nums.length/2){
break;
}
}
return tag;
}
}
写完之后虽然能够实现需求,但是看了大佬的做法实在牛,感觉还是做的太少了,思维不够打开
大佬的代码:
class Solution {
public int majorityElement(int[] nums) {
int res = 0, cnt = 0;
for (int num : nums) {
if (cnt == 0) {
res = num;
cnt++;
} else if (res != num) {
cnt--;
} else {
cnt++;
}
}
return res;
}
}