Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hashMap是否为现有键返回零值?_Java_Hashmap - Fatal编程技术网

Java hashMap是否为现有键返回零值?

Java hashMap是否为现有键返回零值?,java,hashmap,Java,Hashmap,我试图编写一个简单的二和问题(给定一个唯一整数数组,找到等于所需和的两个整数) 我使用hashmap获得所需的数量(当前数量的总和,如果你能在地图中找到,这些就是你的索引),hashmap设置为。然而,当我尝试运行它时,它失败了。我的测试用例最终返回零和零。我一辈子都不知道为什么。谢谢 使用测试用例intnums=[3,2,4],inttarget=6。预期答案=[1,2],给定答案为[0,0] public int[] twoSum(int[] nums, int target) {

我试图编写一个简单的二和问题(给定一个唯一整数数组,找到等于所需和的两个整数)

我使用hashmap获得所需的数量(当前数量的总和,如果你能在地图中找到,这些就是你的索引),hashmap设置为。然而,当我尝试运行它时,它失败了。我的测试用例最终返回零和零。我一辈子都不知道为什么。谢谢 使用测试用例intnums=[3,2,4],inttarget=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;
}
public int[]twoSum(int[]nums,int-target){
int[]returnArray=新的int[2];
Map numsHash=new HashMap();

对于(int i=0;i,因为在比较数组的一个元素时,您正在检查Hashmap的所有元素,这也包括您正在搜索的元素。开始时,当数组元素为3时,您正在搜索
targetSum-nums[0]
,即
6-3=3
(相同的元素).3显然已经存在,其索引为0。因此,您得到的结果是
[0,0]


因此,在检查键
targetSum nums[j]
是否在
HashMap
中时,还要检查结果索引是否与搜索到的索引相同。如果结果索引与搜索到的元素的索引不同,则继续搜索。否则,跳到下一次迭代。

明白了。谢谢您的解释!