mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
95 lines
3.3 KiB
Plaintext
95 lines
3.3 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
|
|
icon: dot
|
|
topics:
|
|
- { name: "Array", slug: "array" }
|
|
- { name: "Hash Table", slug: "hash-table" }
|
|
video: "KLlXCFG5TnA"
|
|
issue: "https://github.com/prdlk/leetcode/issues/29"
|
|
companies:
|
|
- { name: "Amazon", period: "Thirty Days", frequency: 100 }
|
|
- { name: "Google", period: "Thirty Days", frequency: 100 }
|
|
- { name: "Meta", period: "Thirty Days", frequency: 100 }
|
|
- { name: "Microsoft", period: "Thirty Days", frequency: 100 }
|
|
- { name: "tcs", period: "Thirty Days", frequency: 79.6 }
|
|
- { name: "Ola Cabs", period: "Thirty Days", frequency: 76.7 }
|
|
- { name: "Bloomberg", period: "Thirty Days", frequency: 69.8 }
|
|
- { name: "Infosys", period: "Thirty Days", frequency: 68.6 }
|
|
- { name: "Altimetrik", period: "Three Months", frequency: 100 }
|
|
- { name: "Capgemini", period: "Three Months", frequency: 100 }
|
|
- { name: "Microstrategy", period: "Three Months", frequency: 100 }
|
|
- { name: "MongoDB", period: "Three Months", frequency: 100 }
|
|
- { name: "Cognizant", period: "Three Months", frequency: 88.7 }
|
|
- { name: "Apple", period: "Three Months", frequency: 80.4 }
|
|
- { name: "Barclays", period: "Six Months", frequency: 100 }
|
|
- { name: "Cisco", period: "Six Months", frequency: 100 }
|
|
- { name: "Deloitte", period: "Six Months", frequency: 100 }
|
|
- { name: "Expedia", period: "Six Months", frequency: 100 }
|
|
- { name: "NetApp", period: "Six Months", frequency: 100 }
|
|
- { name: "Samsung", period: "Six Months", frequency: 100 }
|
|
- { name: "Sony", period: "Six Months", frequency: 100 }
|
|
- { name: "Oracle", period: "Six Months", frequency: 91.2 }
|
|
- { name: "Qualcomm", period: "Six Months", frequency: 80.7 }
|
|
- { name: "IBM", period: "Six Months", frequency: 77.2 }
|
|
- { name: "eBay", period: "Six Months", frequency: 75.2 }
|
|
- { name: "Walmart Labs", period: "Six Months", frequency: 70.5 }
|
|
- { name: "Flipkart", period: "Six Months", frequency: 57.1 }
|
|
- { name: "Goldman Sachs", period: "Six Months", frequency: 44.8 }
|
|
sidebar:
|
|
label: 'Two Sum'
|
|
badge: 'Easy'
|
|
---
|
|
|
|
::::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 []
|
|
```
|