1. 两数之和

由于哈希查找的时间复杂度为 O(1)O(1),所以可以利用哈希容器 map 降低时间复杂度
遍历数组 nums,i 为当前下标,每个值都判断map中是否存在 target-nums[i] 的 key 值
如果存在则找到了两个值,如果不存在则将当前的 (nums[i],i) 存入 map 中,继续遍历直到找到为止
如果最终都没有结果则抛出异常

class Solution {

    public int[] twoSum(int[] nums, int target) {

        Map<Integer,Integer> m=new HashMap<>();

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

            if(m.containsKey(target-nums[i])){

               return new int[] {m.get(target-nums[i]),i};

            }

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

 

        }

        throw new IllegalArgumentException("No two sum solution");

    }

}

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页