美文网首页
Java:LeetCode-两数之和

Java:LeetCode-两数之和

作者: yesski | 来源:发表于2018-12-05 23:04 被阅读0次

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

    你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

    翻译了一下英文的

    简单的思路就是遍历两遍数组,找到两个值相加, 很明显,这是n2的复杂度

    另外一个简单的思路就是用空间换时间,由于告诉你不会重复, 不用set用hashmap就好了

    key为值,value为下标。时间复杂度O(N)。

    public static int[] twonumadd(int[] nums, int targetnum) {

    int[] label = new int[2];

    HashMap<Integer, Integer> hashMap = new HashMap<>();

    for(int i=0;i<nums.length;i++) {

    hashMap.put(nums[i], i);

    }

    for(int i=0;i<nums.length;i++) {

    if(hashMap.containsKey(targetnum-nums[i])&&hashMap.get(targetnum-nums[i])!=i) {

    label[0] = i;

    label[1] = hashMap.get(target-nums[i]);

    break;

    }

    }

    return label;

    }

    相关文章

      网友评论

          本文标题:Java:LeetCode-两数之和

          本文链接:https://www.haomeiwen.com/subject/tqvgcqtx.html