😎 LeetCode 1. 两数之和 [哈希表]

228 words
1 minute
😎 LeetCode 1. 两数之和 [哈希表]

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。假设每种输入只会对应一个答案,不能使用两次相同的元素。

示例 1:

输入: nums = [2,7,11,15], target = 9
输出: [0,1]

示例 2:

输入: nums = [3,2,4], target = 6
输出: [1,2]

示例 3:

输入: nums = [3,3], target = 6
输出: [0,1]

思路#

  • 创建一个哈希表,将数组元素值作为 key,索引作为 value
  • 遍历数组,对于每个元素 num_i,检查 target - num_i 是否存储在哈希表中,是则输出当前元素索引和 target - num_i 的索引,否则将 num_i 存入哈希表

题解#

1. python#

class Solution:
# 加装饰器实现静态方法
    @staticmethod
    def twoSum(nums, target):
        hashtab = dict()
        for ind, num in enumerate(nums):
            if target - num in hashtab:
                return [ind, hashtab[target - num]]
            hashtab[num] = ind
        return []

2. java#

public class Solution {
static int[] addTwo(int[] nums, int target) {
        HashMap<Integer, Integer> hashTab = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (hashTab.containsKey(target - nums[i])) return new int[{i, hashTab.get(target - nums[i])};
            hashTab.put(nums[i], i);
        }
        return new int[0];
    }
}

Comments

Profile Image of the Author
永雏多氢菲
∴さて····どこへ行こうか?
公告
随缘分享喵
Music
Cover

Music

No playing

0:00 0:00
No lyrics available
Categories
Tags
Site Statistics
Posts
144
Categories
6
Tags
9
Total Words
2,255,454
Running Days
0 days
Last Activity
0 days ago

Table of Contents