2018-11-26 两数之和

题目:

1. 两数之和

解法:

解法一: 直接暴力法

public int[] twoSum(int[] nums, int target) {
    for(int i = 0; i < nums.length - 1; i++){
        for(int j = i+1; j< nums.length; j++){
            if(nums[i] + nums[j] == target){
                return new int[]{i, j};
            }
        }
    }
    return null;
}

解法二: 遍历一次数组即可. 新建一个HashMap, 存储的key-v结构是(数组的值 ==> 数组的下标) 然后每次用 target 减去 遍历的数组的元素, 判断HashMap中是否包含该key, 如果包含则返回下标, 结束.

public int[] twoSum(int[] nums, int target) {
    if((nums == null) || (nums.length < 2)){
        return null;
    }
    Map<Integer , Integer> map = new HashMap<>();
    map.put(nums[0], 0);
    for(int i=1; i< nums.length; i++){
        int tmp = target - nums[i];
        if(map.containsKey(tmp)){
            return new int[]{map.get(tmp), i};
        }else{
            map.put(nums[i], i);
        }
    }
    return null;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 表妹对妹夫说我这样好,说弟弟那样好 两个残疾人这脸往哪搁? 三姨三姨夫一来,给我和弟弟一人一百 三四十岁人这脸往哪...
    壹起桐行阅读 3,325评论 0 0
  • 在这个章节里,古典老师告诉我们:好的战略就是选择大于执行力。我们需要选择的,则是投入和产出的非线性!我们需要找到那...
    古月如歌519阅读 4,716评论 2 14
  • 上卷 一东 云对雨,雪对风,晚照对晴空。来鸿对去燕,宿鸟对鸣虫。三尺剑,六钧弓,岭北对江东。人间清暑殿,天上广寒宫...
    牛二五阅读 3,093评论 0 1
  • 引用form是第三方插件ant插件,官网网址:https://ant.design/。用到的antd的版本是@2....
    神秘者007阅读 12,144评论 0 4
  • 第五章 艾滋病人(1) 第五章 艾滋病人(2) 1 等到白班的接班,才知道是ICU室的护士来接班。孟琪把夜晚的...
    冰月月阅读 4,030评论 14 19