TwoSum解题遇到的error

TwoSum,error

Posted by ChloeClockc on March 16, 2019

‘.class’ expected

这个错误通常由于编译器没法识别错误,可能是需要强制类型转换或者不需要带上类型的值传递。(来自Stack Overflow)。我这里应该原因是return时候去掉out的类型声明,直接return out。


int[]out ={i,j};
return int[]out;}

error: missing return statement

class Solution {
    public int[] twoSum(int[] nums, int target) {
        for(int i=0;i<nums.length;i++)
            for(int j=1;j<nums.length;j++){
                int result=nums[i]+nums[j];
                if (result==target){
                int[]out ={i,j};
               return out;
               }
       }
    // return null;       
}

}

如果不加return null ,for 循环后仍然找不到相等值的话,函数没有返回值。

Could not determine Java version using executabl

需要Gradle 4.7 以上版本 ,没有内置于idea,需要本地安装然后使用local的。

variable declaration not allowed here

变量声明需要在正确位置,与引用不一样。

完整代码

class TwoSum_1 {
    public int[] twoSum(int[] nums, int target) {
        Map <Integer, Integer> map =new HashMap();
        for(int i =0;i < nums.length; i++){
//            构造一个HashMap,把数组的值作为key,数组下标作为v,key与target减去另一个数组值相比,可以得到第二个数组下标;
            int x = nums[i];

            if(map.containsKey(target-x)) {
                int[] result = new int[2];
                result[0] = map.get(target -x);
                result[1] = i;
                return result;
            }
            map.put(x,i);
        }

        throw new IllegalArgumentException("No two sum solution");

    }
    public static void main(String[] args){
        TwoSum_1 solution1 = new TwoSum_1();
        int[] nums = new int[]{2,7,11,5};
        int target = 9;
        int[] re=solution1.twoSum(nums,target);
        String fire= Arrays.toString(re);
        System.out.println(fire);

    }
}