繁体   English   中英

hashMap 为现有键返回零值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM