Archive for April, 2014

lt-1 —-two sum

我的解法: public class Solution { public int[] twoSum(int[] numbers, int target) { HashMap hm=new HashMap(); for(int i=0;i<numbers.length;i++){ if(hm.get(target-numbers[i])!=null){ int r2 = (Integer) hm.get(target-numbers[i]); return new int[]{r2,i+1}; }else{ hm.put(numbers[i], i+1); } } return new int[]{-1,-1}; } } note:用了hashmap,做快查。 这个题有几个坑儿: 1.最直接的解法就是嵌套循环,时间复杂度问题,会报TLE。犯了这个错后,仔细思考,只能做一次循环。那就需要有个临时存储的敌方—>hashmap,边存边计算。 2.返回的index,第一个比第二个小。 所以需要注意hashmap.get(target-numbers[i])是第一个,而i+1才是第二个index 3.input中的数组中,如果有两个相等的数字,那么怎么返,其实题目中并没有要求这种情况下,一定要返第一个index,只要求 返的两个index,第二个一定得比第一个小。开始做了多余的剔除判断,反而在[0,4,3,0],0的输入下,出错。  

Read More…