Я пытаюсь закодировать простую задачу с двумя суммами (учитывая массив уникальных чисел, найдите два, которые равны требуемой сумме).
Я использую хэш-карту для получения необходимой суммы (сумма-текущая сумма, и, если вы можете найти ее на карте, это ваши индексы) с настройкой хеш-карты как <ключ = целое число в массиве, значение = индекс этого целого числа>. Однако, когда я пытаюсь запустить это, мне это не удается. Я заканчиваю тем, что возвращаю ноль и ноль для моего теста. Я не могу на всю жизнь понять, почему. Спасибо!
Используя контрольный пример int nums = [3,2,4], int target = 6. Ожидаемый ответ = [1,2], данный ответ [0,0]
public int[] twoSum(int[] nums, int target) {
int[] returnArray = new int[2];
Map<Integer,Integer> numsHash = new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;i++){
numsHash.put(nums[i],i);
}
int tempSum=target;
for(int j=0;j<nums.length;j++){
if(numsHash.containsKey(tempSum-nums[j])){
returnArray[1]=numsHash.get(nums[j]);
returnArray[0]=numsHash.get(tempSum-nums[j]);
return returnArray;
}
tempSum=target;
}
return returnArray;
}