标签:problems i++ alt 验证 block 长度 哈希 ret arrays
题目
输入输出
Java代码(方法1:借用哈希表计数)
//方法1:借助哈希
public int majorityElement(int[] nums) {
HashMap<Integer,Integer> map = new HashMap<>();
for(int i=0;i<nums.length;i++){
if(!map.containsKey(nums[i])){
map.put(nums[i],1);
}else{
int count = map.get(nums[i]);
map.put(nums[i],++count);
}
}
输出输出
输出:
Java代码(方法2:双指针)
代码
//方法2:两指针计数
public int majorityElement(int[] nums) {
//先进行排序操作
Arrays.sort(nums);
//指针
int i=0;
int j=1;
int count=0;
while(j<nums.length){
if(nums[j]==nums[i]){j++;}
else{
//当不等的时候先清算上次的长度
count = j-i;
if(count >nums.length/2) {return nums[i];}
//重新标记i j
i = j;
j=i+1;
}
}
//退出while的时候,j到头了但是也要验证本次是否需要返回
count = j-i;
return count>nums.length/2?nums[i] : -1;
}
输出:
[编程题] lc [169. 多数元素-双指针和哈希表方法]
标签:problems i++ alt 验证 block 长度 哈希 ret arrays
原文地址:https://www.cnblogs.com/jiyongjia/p/13382956.html