mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
66 lines
1.5 KiB
Plaintext
66 lines
1.5 KiB
Plaintext
---
|
|
title: '1. Two Sum'
|
|
description: You are given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target
|
|
sidebar:
|
|
label: 'Two Sum'
|
|
badge: 'Easy'
|
|
---
|
|
|
|
<Badge variant="accent">Hash Table</Badge>
|
|
|
|
::::warning
|
|
Can you come up with an algorithm that is less than O(n^2) time complexity?
|
|
::::
|
|
|
|
### Example 1:
|
|
- Input: `nums = [2,7,11,15], target = 9`
|
|
- Output: `[0,1]`
|
|
- Explanation: 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]`
|
|
|
|
### Constraints:
|
|
|
|
- `2 <= nums.length <= 10^4`
|
|
- `-10^9 <= nums[i] <= 10^9`
|
|
- `-10^9 <= target <= 10^9`
|
|
- Only one valid answer exists.
|
|
|
|
## Approach
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
S(["twoSum(nums, target)"]) --> I["seen = {} — value to index"]
|
|
I --> L{"more (i, num) in nums?"}
|
|
L -- no --> E(["return []"])
|
|
L -- yes --> C["complement = target - num"]
|
|
C --> H{"complement in seen?"}
|
|
H -- yes --> R(["return [seen[complement], i]"])
|
|
H -- no --> W["seen[num] = i"]
|
|
W --> L
|
|
```
|
|
|
|
## Solution
|
|
|
|
```py
|
|
class Solution:
|
|
def twoSum(self, nums: List[int], target: int) -> List[int]:
|
|
seen = {}
|
|
for i, num in enumerate(nums):
|
|
complement = target - num
|
|
if complement in seen:
|
|
return [seen[complement], i]
|
|
seen[num] = i
|
|
return []
|
|
```
|
|
|
|
## Explanation
|
|
|
|
<YouTube id="KLlXCFG5TnA" title="Two Sum - Leetcode 1 - HashMap - Python" />
|