[英]hashMap returning a value of zero for existing keys?
我正在尝试编写一个简单的二和问题(给定一个唯一整数数组,找到等于所需总和的两个)。
我正在使用哈希图来获取所需的数量(总和 - 当前数量,如果您可以在地图中找到,那么这些就是您的索引),并将哈希图设置为 < key=integer in the array, value=index那个整数>。 但是,当我尝试运行它时,它在我身上失败了。 我最终为我的测试用例返回零和零。 我终其一生都无法弄清楚原因。 谢谢! 使用测试用例 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;
}
因为,您在比较数组的一个元素的同时检查 Hashmap 的所有元素,并且还包括您正在搜索的元素。 一开始,当数组元素为3时,你在搜索targetSum - nums[0]
即6-3=3
(同一个元素)。 显然 3 已经存在并且它的索引是 0。所以你得到[0,0]
作为结果。
因此,在检查 key targetSum-nums[j]
是否在HashMap
,还要检查结果索引是否与搜索索引相同。 如果结果索引与搜索元素的索引不同,则继续搜索。 否则,跳到下一次迭代。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.