Skip to content

Commit e920be2

Browse files
committed
feat: add solutions to lc problem: No.1099
No.1099: Two Sum Less Than K
1 parent e267793 commit e920be2

File tree

7 files changed

+100
-57
lines changed

7 files changed

+100
-57
lines changed

solution/1000-1099/1099.Two Sum Less Than K/README.md

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,23 @@
4343

4444
**方法一:排序 + 二分查找**
4545

46-
我们可以先对数组 `nums` 进行排序,初始化答案为 `-1`
46+
我们可以先对数组 $nums$ 进行排序,初始化答案为 $-1$
4747

48-
接下来,我们枚举数组中的每个元素 `nums[i]`,并在数组中寻找满足 `nums[j] + nums[i] < k` 的最大的 `nums[j]`。这里我们可以使用二分查找来加速寻找过程。如果找到了这样的 `nums[j]`,那么我们就可以更新答案,即 `ans = max(ans, nums[i] + nums[j])`
48+
接下来,我们枚举数组中的每个元素 $nums[i]$,并在数组中寻找满足 $nums[j] + nums[i] \lt k$ 的最大的 $nums[j]$。这里我们可以使用二分查找来加速寻找过程。如果找到了这样的 $nums[j]$,那么我们就可以更新答案,即 $ans = \max(ans, nums[i] + nums[j])$
4949

5050
枚举结束后,返回答案即可。
5151

52-
时间复杂度 $O(n \times \log n)$,空间复杂度 $O(\log n)$。其中 $n$ 是数组 `nums` 的长度。
52+
时间复杂度 $O(n \times \log n)$,空间复杂度 $O(\log n)$。其中 $n$ 是数组 $nums$ 的长度。
5353

5454
**方法二:排序 + 双指针**
5555

56-
与方法一类似,我们可以先对数组 `nums` 进行排序,初始化答案为 `-1`
56+
与方法一类似,我们可以先对数组 $nums$ 进行排序,初始化答案为 $-1$
5757

58-
接下来,我们使用双指针 $i$ 和 $j$ 分别指向数组的左右两端,每次判断 `nums[i] + nums[j]` 是否小于 `k`,如果小于 `k`,那么我们就可以更新答案,即 `ans = max(ans, nums[i] + nums[j])`,并将 $i$ 右移一位,否则将 $j$ 左移一位。
58+
接下来,我们使用双指针 $i$ 和 $j$ 分别指向数组的左右两端,每次判断 $s = nums[i] + nums[j]$ 是否小于 $k$,如果小于 $k$,那么我们就可以更新答案,即 $ans = \max(ans, s)$,并将 $i$ 右移一位,否则将 $j$ 左移一位。
5959

6060
枚举结束后,返回答案即可。
6161

62-
时间复杂度 $O(n \times \log n)$,空间复杂度 $O(\log n)$。其中 $n$ 是数组 `nums` 的长度。
62+
时间复杂度 $O(n \times \log n)$,空间复杂度 $O(\log n)$。其中 $n$ 是数组 $nums$ 的长度。
6363

6464
<!-- tabs:start -->
6565

@@ -83,11 +83,11 @@ class Solution:
8383
class Solution:
8484
def twoSumLessThanK(self, nums: List[int], k: int) -> int:
8585
nums.sort()
86-
ans = -1
8786
i, j = 0, len(nums) - 1
87+
ans = -1
8888
while i < j:
89-
if (t := nums[i] + nums[j]) < k:
90-
ans = max(ans, t)
89+
if (s := nums[i] + nums[j]) < k:
90+
ans = max(ans, s)
9191
i += 1
9292
else:
9393
j -= 1
@@ -132,11 +132,10 @@ class Solution {
132132
public int twoSumLessThanK(int[] nums, int k) {
133133
Arrays.sort(nums);
134134
int ans = -1;
135-
int i = 0, j = nums.length - 1;
136-
while (i < j) {
137-
int t = nums[i] + nums[j];
138-
if (t < k) {
139-
ans = Math.max(ans, t);
135+
for (int i = 0, j = nums.length - 1; i < j;) {
136+
int s = nums[i] + nums[j];
137+
if (s < k) {
138+
ans = Math.max(ans, s);
140139
++i;
141140
} else {
142141
--j;
@@ -172,11 +171,10 @@ public:
172171
int twoSumLessThanK(vector<int>& nums, int k) {
173172
sort(nums.begin(), nums.end());
174173
int ans = -1;
175-
int i = 0, j = nums.size() - 1;
176-
while (i < j) {
177-
int t = nums[i] + nums[j];
178-
if (t < k) {
179-
ans = max(ans, t);
174+
for (int i = 0, j = nums.size() - 1; i < j;) {
175+
int s = nums[i] + nums[j];
176+
if (s < k) {
177+
ans = max(ans, s);
180178
++i;
181179
} else {
182180
--j;
@@ -207,10 +205,9 @@ func twoSumLessThanK(nums []int, k int) int {
207205
func twoSumLessThanK(nums []int, k int) int {
208206
sort.Ints(nums)
209207
ans := -1
210-
i, j := 0, len(nums)-1
211-
for i < j {
212-
if t := nums[i] + nums[j]; t < k {
213-
ans = max(ans, t)
208+
for i, j := 0, len(nums)-1; i < j; {
209+
if s := nums[i] + nums[j]; s < k {
210+
ans = max(ans, s)
214211
i++
215212
} else {
216213
j--
@@ -227,6 +224,25 @@ func max(a, b int) int {
227224
}
228225
```
229226

227+
### **TypeScript**
228+
229+
```ts
230+
function twoSumLessThanK(nums: number[], k: number): number {
231+
nums.sort((a, b) => a - b);
232+
let ans = -1;
233+
for (let i = 0, j = nums.length - 1; i < j; ) {
234+
const s = nums[i] + nums[j];
235+
if (s < k) {
236+
ans = Math.max(ans, s);
237+
++i;
238+
} else {
239+
--j;
240+
}
241+
}
242+
return ans;
243+
}
244+
```
245+
230246
### **...**
231247

232248
```

solution/1000-1099/1099.Two Sum Less Than K/README_EN.md

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ class Solution:
5454
class Solution:
5555
def twoSumLessThanK(self, nums: List[int], k: int) -> int:
5656
nums.sort()
57-
ans = -1
5857
i, j = 0, len(nums) - 1
58+
ans = -1
5959
while i < j:
60-
if (t := nums[i] + nums[j]) < k:
61-
ans = max(ans, t)
60+
if (s := nums[i] + nums[j]) < k:
61+
ans = max(ans, s)
6262
i += 1
6363
else:
6464
j -= 1
@@ -101,11 +101,10 @@ class Solution {
101101
public int twoSumLessThanK(int[] nums, int k) {
102102
Arrays.sort(nums);
103103
int ans = -1;
104-
int i = 0, j = nums.length - 1;
105-
while (i < j) {
106-
int t = nums[i] + nums[j];
107-
if (t < k) {
108-
ans = Math.max(ans, t);
104+
for (int i = 0, j = nums.length - 1; i < j;) {
105+
int s = nums[i] + nums[j];
106+
if (s < k) {
107+
ans = Math.max(ans, s);
109108
++i;
110109
} else {
111110
--j;
@@ -141,11 +140,10 @@ public:
141140
int twoSumLessThanK(vector<int>& nums, int k) {
142141
sort(nums.begin(), nums.end());
143142
int ans = -1;
144-
int i = 0, j = nums.size() - 1;
145-
while (i < j) {
146-
int t = nums[i] + nums[j];
147-
if (t < k) {
148-
ans = max(ans, t);
143+
for (int i = 0, j = nums.size() - 1; i < j;) {
144+
int s = nums[i] + nums[j];
145+
if (s < k) {
146+
ans = max(ans, s);
149147
++i;
150148
} else {
151149
--j;
@@ -176,10 +174,9 @@ func twoSumLessThanK(nums []int, k int) int {
176174
func twoSumLessThanK(nums []int, k int) int {
177175
sort.Ints(nums)
178176
ans := -1
179-
i, j := 0, len(nums)-1
180-
for i < j {
181-
if t := nums[i] + nums[j]; t < k {
182-
ans = max(ans, t)
177+
for i, j := 0, len(nums)-1; i < j; {
178+
if s := nums[i] + nums[j]; s < k {
179+
ans = max(ans, s)
183180
i++
184181
} else {
185182
j--
@@ -196,6 +193,25 @@ func max(a, b int) int {
196193
}
197194
```
198195

196+
### **TypeScript**
197+
198+
```ts
199+
function twoSumLessThanK(nums: number[], k: number): number {
200+
nums.sort((a, b) => a - b);
201+
let ans = -1;
202+
for (let i = 0, j = nums.length - 1; i < j; ) {
203+
const s = nums[i] + nums[j];
204+
if (s < k) {
205+
ans = Math.max(ans, s);
206+
++i;
207+
} else {
208+
--j;
209+
}
210+
}
211+
return ans;
212+
}
213+
```
214+
199215
### **...**
200216

201217
```

solution/1000-1099/1099.Two Sum Less Than K/Solution.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ class Solution {
33
int twoSumLessThanK(vector<int>& nums, int k) {
44
sort(nums.begin(), nums.end());
55
int ans = -1;
6-
int i = 0, j = nums.size() - 1;
7-
while (i < j) {
8-
int t = nums[i] + nums[j];
9-
if (t < k) {
10-
ans = max(ans, t);
6+
for (int i = 0, j = nums.size() - 1; i < j;) {
7+
int s = nums[i] + nums[j];
8+
if (s < k) {
9+
ans = max(ans, s);
1110
++i;
1211
} else {
1312
--j;

solution/1000-1099/1099.Two Sum Less Than K/Solution.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
func twoSumLessThanK(nums []int, k int) int {
22
sort.Ints(nums)
33
ans := -1
4-
i, j := 0, len(nums)-1
5-
for i < j {
6-
if t := nums[i] + nums[j]; t < k {
7-
ans = max(ans, t)
4+
for i, j := 0, len(nums)-1; i < j; {
5+
if s := nums[i] + nums[j]; s < k {
6+
ans = max(ans, s)
87
i++
98
} else {
109
j--

solution/1000-1099/1099.Two Sum Less Than K/Solution.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ class Solution {
22
public int twoSumLessThanK(int[] nums, int k) {
33
Arrays.sort(nums);
44
int ans = -1;
5-
int i = 0, j = nums.length - 1;
6-
while (i < j) {
7-
int t = nums[i] + nums[j];
8-
if (t < k) {
9-
ans = Math.max(ans, t);
5+
for (int i = 0, j = nums.length - 1; i < j;) {
6+
int s = nums[i] + nums[j];
7+
if (s < k) {
8+
ans = Math.max(ans, s);
109
++i;
1110
} else {
1211
--j;

solution/1000-1099/1099.Two Sum Less Than K/Solution.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
class Solution:
22
def twoSumLessThanK(self, nums: List[int], k: int) -> int:
33
nums.sort()
4-
ans = -1
54
i, j = 0, len(nums) - 1
5+
ans = -1
66
while i < j:
7-
if (t := nums[i] + nums[j]) < k:
8-
ans = max(ans, t)
7+
if (s := nums[i] + nums[j]) < k:
8+
ans = max(ans, s)
99
i += 1
1010
else:
1111
j -= 1
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
function twoSumLessThanK(nums: number[], k: number): number {
2+
nums.sort((a, b) => a - b);
3+
let ans = -1;
4+
for (let i = 0, j = nums.length - 1; i < j; ) {
5+
const s = nums[i] + nums[j];
6+
if (s < k) {
7+
ans = Math.max(ans, s);
8+
++i;
9+
} else {
10+
--j;
11+
}
12+
}
13+
return ans;
14+
}

0 commit comments

Comments
 (0)