首页 > 其他 > 详细

两数之和

时间:2017-04-05 23:23:02      阅读:194      评论:0      收藏:0      [点我收藏+]

给定整数数组,如果有两个数之和是给定的数,那么返回两个数的下标。

每组输入只有一个解,同一个数不能用两次

例如:给定nums=[2,7,11,15],target=9,

因为nums[0]+nums[1]=9

返回[0,1]

我的答案:

public class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] res = new int[2];
        for(int i = 0;i<nums.length;i++){
            for(int j = 0;j<nums.length;j++){
                if(nums[i]+nums[j]==target){
                    if(i==j)continue;
                    res[0] = i;
                    res[1] = j;
                    return res;
                }
            }
        }
        return res;
    }
}

看了别人优秀的答案:

public class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] result = new int[2];
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(target - nums[i])) {
                result[1] = i;
                result[0] = map.get(target - nums[i])-1;
                return result;
            }
        map.put(nums[i], i+1);
        }
    return result;
    }
}

使用HashMap,使的效率更高。

两数之和

原文:http://www.cnblogs.com/LoganChen/p/6671038.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!