Skip to content

Commit 04254a3

Browse files
committed
feat: add solutions to lc problems: No.0001, 0167
1 parent e08d1c5 commit 04254a3

File tree

12 files changed

+201
-100
lines changed

12 files changed

+201
-100
lines changed

index.html

+1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-typescript.min.js"></script>
107107
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-python.min.js"></script>
108108
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-swift.min.js"></script>
109+
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-nim.min.js"></script>
109110
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code@2.1.1/dist/docsify-copy-code.min.js"></script>
110111
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
111112
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.min.js"></script>

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

+36-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class Solution:
8181
class Solution {
8282
public int[] twoSum(int[] nums, int target) {
8383
Map<Integer, Integer> map = new HashMap<>();
84-
for (int i = 0, n = nums.length; i < n; ++i) {
84+
for (int i = 0; i < nums.length; ++i) {
8585
int num = target - nums[i];
8686
if (map.containsKey(num)) {
8787
return new int[]{map.get(num), i};
@@ -93,6 +93,41 @@ class Solution {
9393
}
9494
```
9595

96+
### **C++**
97+
98+
```cpp
99+
class Solution {
100+
public:
101+
vector<int> twoSum(vector<int>& nums, int target) {
102+
unordered_map<int, int> map;
103+
for (int i = 0; i < nums.size(); ++i) {
104+
int num = target - nums[i];
105+
if (map.find(num) != map.end()) {
106+
return {map[num], i};
107+
}
108+
map[nums[i]] = i;
109+
}
110+
return {};
111+
}
112+
};
113+
```
114+
115+
### **Go**
116+
117+
```go
118+
func twoSum(nums []int, target int) []int {
119+
numMap := make(map[int]int)
120+
for i, num := range nums {
121+
other := target - num
122+
if _, ok := numMap[other]; ok {
123+
return []int{numMap[other], i}
124+
}
125+
numMap[num] = i
126+
}
127+
return nil
128+
}
129+
```
130+
96131
### **JavaScript**
97132

98133
```js

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

+36-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class Solution:
6767
class Solution {
6868
public int[] twoSum(int[] nums, int target) {
6969
Map<Integer, Integer> map = new HashMap<>();
70-
for (int i = 0, n = nums.length; i < n; ++i) {
70+
for (int i = 0; i < nums.length; ++i) {
7171
int num = target - nums[i];
7272
if (map.containsKey(num)) {
7373
return new int[]{map.get(num), i};
@@ -79,6 +79,41 @@ class Solution {
7979
}
8080
```
8181

82+
### **C++**
83+
84+
```cpp
85+
class Solution {
86+
public:
87+
vector<int> twoSum(vector<int>& nums, int target) {
88+
unordered_map<int, int> map;
89+
for (int i = 0; i < nums.size(); ++i) {
90+
int num = target - nums[i];
91+
if (map.find(num) != map.end()) {
92+
return {map[num], i};
93+
}
94+
map[nums[i]] = i;
95+
}
96+
return {};
97+
}
98+
};
99+
```
100+
101+
### **Go**
102+
103+
```go
104+
func twoSum(nums []int, target int) []int {
105+
numMap := make(map[int]int)
106+
for i, num := range nums {
107+
other := target - num
108+
if _, ok := numMap[other]; ok {
109+
return []int{numMap[other], i}
110+
}
111+
numMap[num] = i
112+
}
113+
return nil
114+
}
115+
```
116+
82117
### **JavaScript**
83118

84119
```js
+8-18
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,14 @@
11
class Solution {
22
public:
3-
vector<int> twoSum(vector<int>& nums, int target)
4-
{
5-
vector<int> res ;
6-
unordered_map<int, int> hash ;
7-
8-
for (int i = 0; i < nums.size(); ++i)
9-
{
10-
int aim = target - nums[i] ;
11-
int local = hash[aim] ;
12-
if (local != NULL)
13-
{
14-
res.push_back(local-1) ;
15-
res.push_back(i) ;
16-
return res ;
3+
vector<int> twoSum(vector<int>& nums, int target) {
4+
unordered_map<int, int> map;
5+
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};
179
}
18-
else
19-
hash[nums[i]] = i+1 ;
10+
map[nums[i]] = i;
2011
}
21-
22-
return res ;
12+
return {};
2313
}
2414
};
+7-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
func twoSum(nums []int, target int) []int {
2-
var numsMap map[int]int
3-
numsMap = make(map[int]int)
4-
for i := 0; i < len(nums); i++ {
5-
if _, ok := numsMap[target-nums[i]]; ok {
6-
7-
return []int{numsMap[target-nums[i]], i}
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}
87
}
9-
numsMap[nums[i]] = i
8+
numMap[num] = i
109
}
1110
return nil
12-
}
11+
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
class Solution {
22
public int[] twoSum(int[] nums, int target) {
33
Map<Integer, Integer> map = new HashMap<>();
4-
for (int i = 0, n = nums.length; i < n; ++i) {
4+
for (int i = 0; i < nums.length; ++i) {
55
int num = target - nums[i];
66
if (map.containsKey(num)) {
77
return new int[]{map.get(num), i};

solution/0100-0199/0167.Two Sum II - Input array is sorted/README.md

+39-24
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
<li>仅存在一个有效答案</li>
4848
</ul>
4949

50-
5150
## 解法
5251

5352
<!-- 这里可写通用的实现逻辑 -->
@@ -63,14 +62,14 @@
6362
```python
6463
class Solution:
6564
def twoSum(self, numbers: List[int], target: int) -> List[int]:
66-
low, high = 0, len(numbers) - 1
67-
while low <= high:
68-
if numbers[low] + numbers[high] == target:
69-
return [low + 1, high + 1]
70-
if numbers[low] + numbers[high] < target:
71-
low += 1
65+
left, right = 0, len(numbers) - 1
66+
while left < right:
67+
if numbers[left] + numbers[right] == target:
68+
return [left + 1, right + 1]
69+
if numbers[left] + numbers[right] < target:
70+
left += 1
7271
else:
73-
high -= 1
72+
right -= 1
7473
return [-1, -1]
7574
```
7675

@@ -81,15 +80,15 @@ class Solution:
8180
```java
8281
class Solution {
8382
public int[] twoSum(int[] numbers, int target) {
84-
int low = 0, high = numbers.length - 1;
85-
while (low <= high) {
86-
if (numbers[low] + numbers[high] == target) {
87-
return new int[]{low + 1, high + 1};
83+
int left = 0, right = numbers.length - 1;
84+
while (left < right) {
85+
if (numbers[left] + numbers[right] == target) {
86+
return new int[]{left + 1, right + 1};
8887
}
89-
if (numbers[low] + numbers[high] < target) {
90-
++low;
88+
if (numbers[left] + numbers[right] < target) {
89+
++left;
9190
} else {
92-
--high;
91+
--right;
9392
}
9493
}
9594
return new int[]{-1, -1};
@@ -103,22 +102,38 @@ class Solution {
103102
class Solution {
104103
public:
105104
vector<int> twoSum(vector<int>& numbers, int target) {
106-
int low = 0, high = numbers.size() - 1;
107-
while (low <= high) {
108-
if (numbers[low] + numbers[high] == target) {
109-
return {low + 1, high + 1};
110-
}
111-
if (numbers[low] + numbers[high] < target) {
112-
++low;
113-
} else {
114-
--high;
105+
int left = 0, right = numbers.size() - 1;
106+
while (left < right) {
107+
if (numbers[left] + numbers[right] == target) {
108+
return {left + 1, right + 1};
115109
}
110+
if (numbers[left] + numbers[right] < target) ++left;
111+
else --right;
116112
}
117113
return {-1, -1};
118114
}
119115
};
120116
```
121117
118+
### **Go**
119+
120+
```go
121+
func twoSum(numbers []int, target int) []int {
122+
left, right := 0, len(numbers)-1
123+
for left < right {
124+
if numbers[left]+numbers[right] == target {
125+
return []int{left + 1, right + 1}
126+
}
127+
if numbers[left]+numbers[right] < target {
128+
left++
129+
} else {
130+
right--
131+
}
132+
}
133+
return []int{-1, -1}
134+
}
135+
```
136+
122137
### **...**
123138

124139
```

solution/0100-0199/0167.Two Sum II - Input array is sorted/README_EN.md

+39-24
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
<li><strong>Only one valid answer exists.</strong></li>
4545
</ul>
4646

47-
4847
## Solutions
4948

5049
<!-- tabs:start -->
@@ -54,14 +53,14 @@
5453
```python
5554
class Solution:
5655
def twoSum(self, numbers: List[int], target: int) -> List[int]:
57-
low, high = 0, len(numbers) - 1
58-
while low <= high:
59-
if numbers[low] + numbers[high] == target:
60-
return [low + 1, high + 1]
61-
if numbers[low] + numbers[high] < target:
62-
low += 1
56+
left, right = 0, len(numbers) - 1
57+
while left < right:
58+
if numbers[left] + numbers[right] == target:
59+
return [left + 1, right + 1]
60+
if numbers[left] + numbers[right] < target:
61+
left += 1
6362
else:
64-
high -= 1
63+
right -= 1
6564
return [-1, -1]
6665
```
6766

@@ -70,15 +69,15 @@ class Solution:
7069
```java
7170
class Solution {
7271
public int[] twoSum(int[] numbers, int target) {
73-
int low = 0, high = numbers.length - 1;
74-
while (low <= high) {
75-
if (numbers[low] + numbers[high] == target) {
76-
return new int[]{low + 1, high + 1};
72+
int left = 0, right = numbers.length - 1;
73+
while (left < right) {
74+
if (numbers[left] + numbers[right] == target) {
75+
return new int[]{left + 1, right + 1};
7776
}
78-
if (numbers[low] + numbers[high] < target) {
79-
++low;
77+
if (numbers[left] + numbers[right] < target) {
78+
++left;
8079
} else {
81-
--high;
80+
--right;
8281
}
8382
}
8483
return new int[]{-1, -1};
@@ -92,22 +91,38 @@ class Solution {
9291
class Solution {
9392
public:
9493
vector<int> twoSum(vector<int>& numbers, int target) {
95-
int low = 0, high = numbers.size() - 1;
96-
while (low <= high) {
97-
if (numbers[low] + numbers[high] == target) {
98-
return {low + 1, high + 1};
99-
}
100-
if (numbers[low] + numbers[high] < target) {
101-
++low;
102-
} else {
103-
--high;
94+
int left = 0, right = numbers.size() - 1;
95+
while (left < right) {
96+
if (numbers[left] + numbers[right] == target) {
97+
return {left + 1, right + 1};
10498
}
99+
if (numbers[left] + numbers[right] < target) ++left;
100+
else --right;
105101
}
106102
return {-1, -1};
107103
}
108104
};
109105
```
110106
107+
### **Go**
108+
109+
```go
110+
func twoSum(numbers []int, target int) []int {
111+
left, right := 0, len(numbers)-1
112+
for left < right {
113+
if numbers[left]+numbers[right] == target {
114+
return []int{left + 1, right + 1}
115+
}
116+
if numbers[left]+numbers[right] < target {
117+
left++
118+
} else {
119+
right--
120+
}
121+
}
122+
return []int{-1, -1}
123+
}
124+
```
125+
111126
### **...**
112127

113128
```

solution/0100-0199/0167.Two Sum II - Input array is sorted/Solution.cpp

+6-9
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
class Solution {
22
public:
33
vector<int> twoSum(vector<int>& numbers, int target) {
4-
int low = 0, high = numbers.size() - 1;
5-
while (low <= high) {
6-
if (numbers[low] + numbers[high] == target) {
7-
return {low + 1, high + 1};
8-
}
9-
if (numbers[low] + numbers[high] < target) {
10-
++low;
11-
} else {
12-
--high;
4+
int left = 0, right = numbers.size() - 1;
5+
while (left < right) {
6+
if (numbers[left] + numbers[right] == target) {
7+
return {left + 1, right + 1};
138
}
9+
if (numbers[left] + numbers[right] < target) ++left;
10+
else --right;
1411
}
1512
return {-1, -1};
1613
}

0 commit comments

Comments
 (0)