LeetCode 日记 1.两数之和

LeetCode 日记 1.两数之和_第1张图片
题目来源:https://leetcode-cn.com/problems/two-sum/

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

class Solution {
    public int[] twoSum(int[] nums, int target) {
        
        HashMap<Integer,Integer> map = new HashMap<>();

        for(int i = 0;i<nums.length;i++){
            int temp = target - nums[i];
            if(map.containsKey(temp)){
                return new int[]{map.get(temp),i};
            }
            map.put(nums[i],i);
        }
        throw new IllegalArgumentException("No two sum solution");
    }
}

你可能感兴趣的:(LeetCode)