Two Sum

来源:互联网 发布:手写字体软件 编辑:程序博客网 时间:2024/05/17 20:34

以为只要保证O(n)的时间效率就可以,所以一开始是这样的HashMap做的:

    public static int[] twoSum(int[] nums, int target) {    int [] v = new int[2];    Map<Integer,Integer> map = new HashMap<Integer, Integer>();    for(int i=0;i<nums.length;i++){map.put( nums[i],i);}    for(int key : map.keySet()){    if(map.containsKey(target-key)){    v[0]=map.get(key)+1;    v[1]=map.get(target-key)+1;    break;    }    }return v;       }

后来发现一直Time Limit Exceeded,无奈就改为遍历一次的。

    public static int[] twoSum2(int[] nums, int target) {int[] v = new int[2];Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (int i = 0; i < nums.length; i++) {if(map.containsKey(nums[i])){v[0]=map.get(nums[i])+1;v[1]=i+1;}else{map.put(target-nums[i], i);}}return v;    }
回头用C++实现一次。

0 0
原创粉丝点击