我不确定为什么当代码已经存在时我的代码中的值没有增加。任何提示都非常感谢:
import java.util.HashMap;
public class MajorityElement {
public int majorityElement(int[] nums) {
int halfSize = nums.length/2;
int temp=0;
int majorityValue=0;
HashMap<Integer, Integer> valuesMap = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (valuesMap.containsValue(nums[i])) {
temp=valuesMap.get(nums[i]);
valuesMap.put(nums[i], temp++);
} else {
valuesMap.put(nums[i], 1);
}
}
for (Integer key : valuesMap.keySet()){
if (valuesMap.get(key)>= halfSize){
majorityValue=key;
}
}
return majorityValue;
}
public static void main(String[] argc){
MajorityElement majority=new MajorityElement();
int[] sampleArray={1,4,6,8,8,9,8,8,0,8};
int majorityRes=majority.majorityElement(sampleArray);
System.out.println("majority value is = [" + majorityRes + "]");
return;
}
}
更新:我将代码更改为
for (int i = 0; i < nums.length; i++) {
if (valuesMap.containsValue(nums[i])) {
// temp=valuesMap.get(nums[i]);
valuesMap.put(nums[i], valuesMap.get(nums[i])+1);
} else {
valuesMap.put(nums[i], 1);
}
}
仍然打印 0 为majorityRes
. 知道为什么吗?
更新':通过更改为containsKey()
拼写错误来解决问题。