高级农民
- 积分
- 1845
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2012-3-11
- 最后登录
- 1970-1-1
|
首先你不能够先就把numbers【i】,i 放入map,因为你之后做的检查是先检查有没有 target- numbers[i],然后就是你的返回值有错误,应该返回index,直接返回i+1就好了。不然会null pointer报错。第三个错误是你的res中顺序反了,我记得题目中说要按照从小到大排列吧?所以res[1]才是i+1
这是我跟你修改后的代码- public class Solution {
- public int[] twoSum(int[] numbers, int target) {
- int[] res=new int[2];
- HashMap<Integer,Integer> map =new HashMap<Integer,Integer>();
-
- if(numbers==null||numbers.length<2)
- return null;
- for(int i=0;i<numbers.length;i++)
- {
- if(map.containsKey(target-numbers[i]))
- {
- res[1]=map.get(numbers[i])+1;
- res[0]=map.get(target-numbers[i])+1;
- return res;
- }
- else map.put(numbers[i],i);
- }
- return null;
- }
- }
复制代码 |
|