Skip to content

Commit aaa5ab0

Browse files
committed
feat: update solutions to lc problem: No.0001
No.0001.Two Sum
1 parent b630a08 commit aaa5ab0

File tree

8 files changed

+165
-121
lines changed

8 files changed

+165
-121
lines changed

solution/0000-0099/0001.Two Sum/README.md

Lines changed: 64 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,14 @@
5353

5454
<!-- 这里可写通用的实现逻辑 -->
5555

56+
**方法一:哈希表**
57+
5658
用哈希表(字典)存放数组值以及对应的下标。
5759

5860
遍历数组,当发现 `target - nums[i]` 在哈希表中,说明找到了目标值。
5961

62+
时间复杂度 $O(n)$,空间复杂度 $O(n)$。
63+
6064
<!-- tabs:start -->
6165

6266
### **Python3**
@@ -66,12 +70,12 @@
6670
```python
6771
class Solution:
6872
def twoSum(self, nums: List[int], target: int) -> List[int]:
69-
helper = {}
73+
m = {}
7074
for i, v in enumerate(nums):
71-
num = target - v
72-
if num in helper:
73-
return [helper[num], i]
74-
helper[v] = i
75+
x = target - v
76+
if x in m:
77+
return [m[x], i]
78+
m[v] = i
7579
```
7680

7781
### **Java**
@@ -81,13 +85,14 @@ class Solution:
8185
```java
8286
class Solution {
8387
public int[] twoSum(int[] nums, int target) {
84-
Map<Integer, Integer> map = new HashMap<>();
88+
Map<Integer, Integer> m = new HashMap<>();
8589
for (int i = 0; i < nums.length; ++i) {
86-
int num = target - nums[i];
87-
if (map.containsKey(num)) {
88-
return new int[]{map.get(num), i};
90+
int v = nums[i];
91+
int x = target - v;
92+
if (m.containsKey(x)) {
93+
return new int[]{m.get(x), i};
8994
}
90-
map.put(nums[i], i);
95+
m.put(v, i);
9196
}
9297
return null;
9398
}
@@ -100,13 +105,12 @@ class Solution {
100105
class Solution {
101106
public:
102107
vector<int> twoSum(vector<int>& nums, int target) {
103-
unordered_map<int, int> map;
108+
unordered_map<int, int> m;
104109
for (int i = 0; i < nums.size(); ++i) {
105-
int num = target - nums[i];
106-
if (map.find(num) != map.end()) {
107-
return {map[num], i};
108-
}
109-
map[nums[i]] = i;
110+
int v = nums[i];
111+
int x = target - v;
112+
if (m.count(x)) return {m[x], i};
113+
m[v] = i;
110114
}
111115
return {};
112116
}
@@ -117,13 +121,13 @@ public:
117121
118122
```go
119123
func twoSum(nums []int, target int) []int {
120-
numMap := make(map[int]int)
121-
for i, num := range nums {
122-
other := target - num
123-
if _, ok := numMap[other]; ok {
124-
return []int{numMap[other], i}
124+
m := map[int]int{}
125+
for i, v := range nums {
126+
x := target - v
127+
if j, ok := m[x]; ok {
128+
return []int{j, i}
125129
}
126-
numMap[num] = i
130+
m[v] = i
127131
}
128132
return nil
129133
}
@@ -132,18 +136,51 @@ func twoSum(nums []int, target int) []int {
132136
### **JavaScript**
133137

134138
```js
139+
/**
140+
* @param {number[]} nums
141+
* @param {number} target
142+
* @return {number[]}
143+
*/
135144
var twoSum = function (nums, target) {
136-
const map = new Map();
137-
for (let i = 0; i < nums.length; i++) {
138-
if (map.has(target - nums[i])) {
139-
return [map.get(target - nums[i]), i];
145+
const m = new Map();
146+
for (let i = 0; i < nums.length; ++i) {
147+
const v = nums[i];
148+
const x = target - v;
149+
if (m.has(x)) {
150+
return [m.get(x), i];
140151
}
141-
map.set(nums[i], i);
152+
m.set(v, i);
142153
}
143154
return [];
144155
};
145156
```
146157

158+
### **C#**
159+
160+
```cs
161+
public class Solution {
162+
public int[] TwoSum(int[] nums, int target) {
163+
var m = new Dictionary<int, int>();
164+
for (var i = 0; i < nums.Length; ++i)
165+
{
166+
int j;
167+
int v = nums[i];
168+
int x = target - v;
169+
if (m.TryGetValue(x, out j))
170+
{
171+
return new [] {j, i};
172+
}
173+
if (!m.ContainsKey(v))
174+
{
175+
m.Add(v, i);
176+
}
177+
178+
}
179+
return null;
180+
}
181+
}
182+
```
183+
147184
### **Swift**
148185

149186
```swift

solution/0000-0099/0001.Two Sum/README_EN.md

Lines changed: 60 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -55,26 +55,27 @@
5555
```python
5656
class Solution:
5757
def twoSum(self, nums: List[int], target: int) -> List[int]:
58-
helper = {}
58+
m = {}
5959
for i, v in enumerate(nums):
60-
num = target - v
61-
if num in helper:
62-
return [helper[num], i]
63-
helper[v] = i
60+
x = target - v
61+
if x in m:
62+
return [m[x], i]
63+
m[v] = i
6464
```
6565

6666
### **Java**
6767

6868
```java
6969
class Solution {
7070
public int[] twoSum(int[] nums, int target) {
71-
Map<Integer, Integer> map = new HashMap<>();
71+
Map<Integer, Integer> m = new HashMap<>();
7272
for (int i = 0; i < nums.length; ++i) {
73-
int num = target - nums[i];
74-
if (map.containsKey(num)) {
75-
return new int[]{map.get(num), i};
73+
int v = nums[i];
74+
int x = target - v;
75+
if (m.containsKey(x)) {
76+
return new int[]{m.get(x), i};
7677
}
77-
map.put(nums[i], i);
78+
m.put(v, i);
7879
}
7980
return null;
8081
}
@@ -87,13 +88,12 @@ class Solution {
8788
class Solution {
8889
public:
8990
vector<int> twoSum(vector<int>& nums, int target) {
90-
unordered_map<int, int> map;
91+
unordered_map<int, int> m;
9192
for (int i = 0; i < nums.size(); ++i) {
92-
int num = target - nums[i];
93-
if (map.find(num) != map.end()) {
94-
return {map[num], i};
95-
}
96-
map[nums[i]] = i;
93+
int v = nums[i];
94+
int x = target - v;
95+
if (m.count(x)) return {m[x], i};
96+
m[v] = i;
9797
}
9898
return {};
9999
}
@@ -104,28 +104,61 @@ public:
104104
105105
```go
106106
func twoSum(nums []int, target int) []int {
107-
numMap := make(map[int]int)
108-
for i, num := range nums {
109-
other := target - num
110-
if _, ok := numMap[other]; ok {
111-
return []int{numMap[other], i}
107+
m := map[int]int{}
108+
for i, v := range nums {
109+
x := target - v
110+
if j, ok := m[x]; ok {
111+
return []int{j, i}
112112
}
113-
numMap[num] = i
113+
m[v] = i
114114
}
115115
return nil
116116
}
117117
```
118118

119+
### **C#**
120+
121+
```cs
122+
public class Solution {
123+
public int[] TwoSum(int[] nums, int target) {
124+
var m = new Dictionary<int, int>();
125+
for (var i = 0; i < nums.Length; ++i)
126+
{
127+
int j;
128+
int v = nums[i];
129+
int x = target - v;
130+
if (m.TryGetValue(x, out j))
131+
{
132+
return new [] {j, i};
133+
}
134+
if (!m.ContainsKey(v))
135+
{
136+
m.Add(v, i);
137+
}
138+
139+
}
140+
return null;
141+
}
142+
}
143+
```
144+
119145
### **JavaScript**
120146

121147
```js
148+
/**
149+
* @param {number[]} nums
150+
* @param {number} target
151+
* @return {number[]}
152+
*/
122153
var twoSum = function (nums, target) {
123-
const map = new Map();
124-
for (let i = 0; i < nums.length; i++) {
125-
if (map.has(target - nums[i])) {
126-
return [map.get(target - nums[i]), i];
154+
const m = new Map();
155+
for (let i = 0; i < nums.length; ++i) {
156+
const v = nums[i];
157+
const x = target - v;
158+
if (m.has(x)) {
159+
return [m.get(x), i];
127160
}
128-
map.set(nums[i], i);
161+
m.set(v, i);
129162
}
130163
return [];
131164
};

solution/0000-0099/0001.Two Sum/Solution.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
class Solution {
22
public:
33
vector<int> twoSum(vector<int>& nums, int target) {
4-
unordered_map<int, int> map;
4+
unordered_map<int, int> m;
55
for (int i = 0; i < nums.size(); ++i) {
6-
int num = target - nums[i];
7-
if (map.find(num) != map.end()) {
8-
return {map[num], i};
9-
}
10-
map[nums[i]] = i;
6+
int v = nums[i];
7+
int x = target - v;
8+
if (m.count(x)) return {m[x], i};
9+
m[v] = i;
1110
}
1211
return {};
1312
}

solution/0000-0099/0001.Two Sum/Solution.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1-
using System.Collections.Generic;
2-
31
public class Solution {
42
public int[] TwoSum(int[] nums, int target) {
5-
var dict = new Dictionary<int, int>();
3+
var m = new Dictionary<int, int>();
64
for (var i = 0; i < nums.Length; ++i)
75
{
8-
int index;
9-
if (dict.TryGetValue(target - nums[i], out index))
6+
int j;
7+
int v = nums[i];
8+
int x = target - v;
9+
if (m.TryGetValue(x, out j))
1010
{
11-
return new [] { index, i};
11+
return new [] {j, i};
1212
}
13-
if (!dict.ContainsKey(nums[i]))
13+
if (!m.ContainsKey(v))
1414
{
15-
dict.Add(nums[i], i);
15+
m.Add(v, i);
1616
}
17+
1718
}
1819
return null;
1920
}
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
func twoSum(nums []int, target int) []int {
2-
numMap := make(map[int]int)
3-
for i, num := range nums {
4-
other := target - num
5-
if _, ok := numMap[other]; ok {
6-
return []int{numMap[other], i}
2+
m := map[int]int{}
3+
for i, v := range nums {
4+
x := target - v
5+
if j, ok := m[x]; ok {
6+
return []int{j, i}
77
}
8-
numMap[num] = i
8+
m[v] = i
99
}
1010
return nil
1111
}

solution/0000-0099/0001.Two Sum/Solution.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
class Solution {
22
public int[] twoSum(int[] nums, int target) {
3-
Map<Integer, Integer> map = new HashMap<>();
3+
Map<Integer, Integer> m = new HashMap<>();
44
for (int i = 0; i < nums.length; ++i) {
5-
int num = target - nums[i];
6-
if (map.containsKey(num)) {
7-
return new int[]{map.get(num), i};
5+
int v = nums[i];
6+
int x = target - v;
7+
if (m.containsKey(x)) {
8+
return new int[]{m.get(x), i};
89
}
9-
map.put(nums[i], i);
10+
m.put(v, i);
1011
}
1112
return null;
1213
}

0 commit comments

Comments
 (0)