Я не уверен, почему значение не увеличивается в моем коде, когда код уже существует. Любой намек очень ценится:Увеличение значения hashmap, если ключ уже существует
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;
}
}
UPDATE: Я изменил мой код
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
. Любая идея, почему?
UPDATE ': Исправлена ошибка, изменив ее на containsKey()
, которая была опечаткой.
Я сделал изменение, которое вы упомянули, и мой код все еще не работает! –
какой выход @MonaJalal – John