https://blog.csdn.net/weixin_43736639/article/details/123240740
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = \[2,7,11,15\], target = 9
输出:\[0,1\]
解释:因为 nums\[0\] + nums\[1\] == 9 ,返回 \[0, 1\] 。
代码段:
class Solution { public int[] twoSum(int[] nums, int target) {//定义一个数组保存结果 int[] ans = new int[2]; int length = nums.length;for(int i = 0;i < length;i++){for(int j = i+1;j < length;j++){if(nums[i] + nums[j] == target){ ans[0] = i; ans[1] = j;return ans; } } }// return null;return new int[0]; }
在代码写到for循环结束之后,对于应该返回一个什么样的值产生了分歧。在代码开始定义twoSum方法时,就已经定义返回值应该是int类型的数组,所以更合理的解释是返回return new int\0\,定义在此处没有实际的意义,只是为了编译器编译过程中不出错。
同时,对返回值为return null,也进行了编译,编译结果也没有报错,但是个人觉得还是应该使用return new int\[0\];假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对返回数组进一步处理,而如果返回空数组,则无须null引用检查。鉴于此,返回数组的方法在没有结果时通常返回空数组,而不是null,这样做对于函数调用者的处理比较方便。