Leetcode 0001: Two Sum

题目描述:

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Output: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Time complexity: O(n)
循环一遍 nums 数组,在每步循环中我们做两件事:

  1. 判断 target−nums[i] 是否在哈希表中,存在即可返回对应的 key 和 value。
  2. 将新的 key: nums[i], value: i 插入哈希表中;
class Solution {
    
    
    public int[] twoSum(int[] nums, int target) {
    
    
        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < nums.length;i++){
    
    
            int y = target - nums[i];
            if(map.containsKey(y)){
    
    
                return new int[]{
    
    map.get(y), i};
            }else{
    
    
                map.put(nums[i], i);
            }
        }
        return null;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43946031/article/details/113778655