@@ -20,6 +20,7 @@ module.exports = () => ({
20
20
text : `
21
21
public int binarySearch(int[] nums, int target) {
22
22
// 左右都闭合的区间 [l, r]
23
+ // A closed interval [l, r] with both ends inclusive.
23
24
int left = 0;
24
25
int right = nums.length - 1;
25
26
@@ -29,9 +30,11 @@ module.exports = () => ({
29
30
return mid;
30
31
if (nums[mid] < target)
31
32
// 搜索区间变为 [mid+1, right]
33
+ // Narrow down the search range to [mid+1, right]
32
34
left = mid + 1;
33
35
if (nums[mid] > target)
34
36
// 搜索区间变为 [left, mid - 1]
37
+ // Narrow down the search range to [left, mid - 1]
35
38
right = mid - 1;
36
39
}
37
40
return -1;
@@ -42,13 +45,16 @@ module.exports = () => ({
42
45
text : `
43
46
def binarySearch(nums, target):
44
47
# 左右都闭合的区间 [l, r]
48
+ # A closed interval [l, r] with both ends inclusive.
45
49
l, r = 0, len(nums) - 1
46
50
while l <= r:
47
51
mid = (left + right) >> 1
48
52
if nums[mid] == target: return mid
49
53
# 搜索区间变为 [mid+1, right]
54
+ # Narrow down the search range to [mid+1, right]
50
55
if nums[mid] < target: l = mid + 1
51
56
# 搜索区间变为 [left, mid - 1]
57
+ # Narrow down the search range to [left, mid - 1]
52
58
if nums[mid] > target: r = mid - 1
53
59
return -1` ,
54
60
} ,
@@ -63,9 +69,11 @@ module.exports = () => ({
63
69
if (nums[mid] == target) return mid;
64
70
if (nums[mid] < target)
65
71
// 搜索区间变为 [mid+1, right]
72
+ // Narrow down the search range to [mid+1, right]
66
73
left = mid + 1;
67
74
if (nums[mid] > target)
68
75
// 搜索区间变为 [left, mid - 1]
76
+ // Narrow down the search range to [left, mid - 1]
69
77
right = mid - 1;
70
78
}
71
79
return -1;
@@ -83,9 +91,11 @@ module.exports = () => ({
83
91
int mid = left + ((right - left) >> 1);
84
92
if(nums[mid] == target){ return mid; }
85
93
// 搜索区间变为 [mid+1, right]
94
+ // Narrow down the search range to [mid+1, right]
86
95
else if(nums[mid] < target)
87
96
left = mid + 1;
88
97
// 搜索区间变为 [left, mid - 1]
98
+ // Narrow down the search range to [left, mid - 1]
89
99
else
90
100
right = mid - 1;
91
101
}
@@ -116,20 +126,24 @@ module.exports = () => ({
116
126
text : `
117
127
public int binarySearchLeft(int[] nums, int target) {
118
128
// 搜索区间为 [left, right]
129
+ // A closed interval [left, right] with both ends inclusive.
119
130
int left = 0;
120
131
int right = nums.length - 1;
121
132
while (left <= right) {
122
133
int mid = left + (right - left) / 2;
123
134
if (nums[mid] < target) {
124
135
// 搜索区间变为 [mid+1, right]
136
+ // Narrow down the search range to [mid+1, right]
125
137
left = mid + 1;
126
138
}
127
139
if (nums[mid] >= target) {
128
140
// 搜索区间变为 [left, mid-1]
141
+ // Narrow down the search range to [left, mid-1]
129
142
right = mid - 1;
130
143
}
131
144
}
132
145
// 检查是否越界
146
+ // Check if it is out of bounds
133
147
if (left >= nums.length || nums[left] != target)
134
148
return -1;
135
149
return left;
@@ -140,12 +154,15 @@ module.exports = () => ({
140
154
text : `
141
155
def binarySearchLeft(nums, target):
142
156
# 左右都闭合的区间 [l, r]
157
+ # A closed interval [l, r] with both ends inclusive.
143
158
l, r = 0, len(nums) - 1
144
159
while l <= r:
145
160
mid = (l + r) >> 1
146
161
# 搜索区间变为 [mid+1, right]
162
+ # Narrow down the search range to [mid+1, right]
147
163
if nums[mid] < target: l = mid + 1
148
164
# 搜索区间变为 [left, mid - 1]
165
+ # Narrow down the search range to [left, mid - 1]
149
166
if nums[mid] >= target: r = mid - 1
150
167
if l >= len(nums) or nums[l] != target: return -1
151
168
return l` ,
@@ -160,12 +177,15 @@ module.exports = () => ({
160
177
const mid = Math.floor(left + (right - left) / 2);
161
178
if (nums[mid] < target)
162
179
// 搜索区间变为 [mid+1, right]
180
+ // Narrow down the search range to [mid+1, right]
163
181
left = mid + 1;
164
182
if (nums[mid] >= target)
165
183
// 搜索区间变为 [left, mid - 1]
184
+ // Narrow down the search range to [left, mid - 1]
166
185
right = mid - 1;
167
186
}
168
187
// 检查是否越界
188
+ // Check if it is out of bounds
169
189
if (left >= nums.length || nums[left] != target) return -1;
170
190
return left;
171
191
}` ,
@@ -175,23 +195,28 @@ module.exports = () => ({
175
195
text : `
176
196
int binarySearchLeft(vector<int>& nums, int target) {
177
197
// 搜索区间为 [left, right]
198
+ // The search interval is [left, right].
178
199
int left = 0, right = nums.size() - 1;
179
200
while (left <= right) {
180
201
int mid = left + ((right - left) >> 1);
181
202
if (nums[mid] == target) {
182
203
// 收缩右边界
204
+ // Narrow down the right boundary
183
205
right = mid - 1;
184
206
}
185
207
if (nums[mid] < target) {
186
208
// 搜索区间变为 [mid+1, right]
209
+ // Narrow down the search range to [mid+1, right]
187
210
left = mid + 1;
188
211
}
189
212
if (nums[mid] > target) {
190
213
// 搜索区间变为 [left, mid-1]
214
+ // Narrow down the search range to [left, mid-1]
191
215
right = mid - 1;
192
216
}
193
217
}
194
218
// 检查是否越界
219
+ // Check if it is out of bounds
195
220
if (left >= nums.size() || nums[left] != target)
196
221
return -1;
197
222
return left;
@@ -221,20 +246,24 @@ module.exports = () => ({
221
246
text : `
222
247
public int binarySearchRight(int[] nums, int target) {
223
248
// 搜索区间为 [left, right]
249
+ // A closed interval [left, right] with both ends inclusive.
224
250
int left = 0
225
251
int right = nums.length - 1;
226
252
while (left <= right) {
227
253
int mid = left + (right - left) / 2;
228
254
if (nums[mid] <= target) {
229
255
// 搜索区间变为 [mid+1, right]
256
+ // Narrow down the search range to [mid+1, right]
230
257
left = mid + 1;
231
258
}
232
259
if (nums[mid] > target) {
233
260
// 搜索区间变为 [left, mid-1]
261
+ // Narrow down the search range to [left, mid-1]
234
262
right = mid - 1;
235
263
}
236
264
}
237
265
// 检查是否越界
266
+ // Check if it is out of bounds
238
267
if (right < 0 || nums[right] != target)
239
268
return -1;
240
269
return right;
@@ -245,12 +274,15 @@ module.exports = () => ({
245
274
text : `
246
275
def binarySearchRight(nums, target):
247
276
# 左右都闭合的区间 [l, r]
277
+ # A closed interval [l, r] with both ends inclusive.
248
278
l, r = 0, len(nums) - 1
249
279
while l <= r:
250
280
mid = (l + r) >> 1
251
281
# 搜索区间变为 [mid+1, right]
282
+ # Narrow down the search range to [mid+1, right]
252
283
if nums[mid] <= target: l = mid + 1
253
284
# 搜索区间变为 [left, mid - 1]
285
+ # Narrow down the search range to [left, mid - 1]
254
286
if nums[mid] > target: r = mid - 1
255
287
if r < 0 or nums[r] != target: return -1
256
288
return r` ,
@@ -265,12 +297,15 @@ module.exports = () => ({
265
297
const mid = Math.floor(left + (right - left) / 2);
266
298
if (nums[mid] <= target)
267
299
// 搜索区间变为 [mid+1, right]
300
+ // Narrow down the search range to [mid+1, right]
268
301
left = mid + 1;
269
302
if (nums[mid] > target)
270
303
// 搜索区间变为 [left, mid - 1]
304
+ // Narrow down the search range to [left, mid - 1]
271
305
right = mid - 1;
272
306
}
273
307
// 检查是否越界
308
+ // Check if it is out of bounds
274
309
if (right < 0 || nums[right] != target) return -1;
275
310
return right;
276
311
}` ,
@@ -280,23 +315,28 @@ module.exports = () => ({
280
315
text : `
281
316
int binarySearchRight(vector<int>& nums, int target) {
282
317
// 搜索区间为 [left, right]
318
+ // The search interval is [left, right].
283
319
int left = 0, right = nums.size() - 1;
284
320
while (left <= right) {
285
321
int mid = left + ((right - left) >> 1);
286
322
if (nums[mid] == target) {
287
323
// 收缩左边界
324
+ // Narrow down the left boundary
288
325
left = mid + 1;
289
326
}
290
327
if (nums[mid] < target) {
291
328
// 搜索区间变为 [mid+1, right]
329
+ // Narrow down the search range to [mid+1, right]
292
330
left = mid + 1;
293
331
}
294
332
if (nums[mid] > target) {
295
333
// 搜索区间变为 [left, mid-1]
334
+ // Narrow down the search range to [left, mid-1]
296
335
right = mid - 1;
297
336
}
298
337
}
299
338
// 检查是否越界
339
+ // Check if it is out of bounds
300
340
if (right < 0 || nums[right] != target)
301
341
return -1;
302
342
return right;
@@ -315,8 +355,10 @@ module.exports = () => ({
315
355
text : `
316
356
def bisect_left(nums, x):
317
357
# 内置 api
358
+ # built-in API
318
359
bisect.bisect_left(nums, x)
319
360
# 手写
361
+ # Manually write
320
362
l, r = 0, len(A) - 1
321
363
while l <= r:
322
364
mid = (l + r) // 2
@@ -330,13 +372,14 @@ module.exports = () => ({
330
372
text : `
331
373
/**
332
374
* @author suukii
333
- * @description 寻找最左插入位置
375
+ * @description ${ t ( "Locale.codeTemplate.binarySearch.item4" ) }
334
376
* @param {number[]} nums
335
377
* @param {number} x
336
378
* @returns {number}
337
379
*/
338
380
function searchInsertLeft(nums, x) {
339
381
// 题意转换���下,其实就是寻找第一个“大于等于” x 的数字,返回它的下标
382
+ // Change the meaning of the question, in fact, it is to find the first number "greater than or equal to" x and return its subscript
340
383
let left = 0;
341
384
let right = nums.length - 1;
342
385
@@ -369,8 +412,10 @@ function searchInsertLeft(nums, x) {
369
412
text : `
370
413
def bisect_right(nums, x):
371
414
# 内置 api
415
+ # built-in API
372
416
bisect.bisect_right(nums, x)
373
417
# 手写
418
+ # Manually write
374
419
l, r = 0, len(A) - 1
375
420
while l <= r:
376
421
mid = (l + r) // 2
@@ -383,13 +428,14 @@ function searchInsertLeft(nums, x) {
383
428
language : "JS" ,
384
429
text : `
385
430
/**@author suukii
386
- * @description 寻找最右插入位置
431
+ * @description ${ t ( "Locale.codeTemplate.binarySearch.item5" ) }
387
432
* @param {number[]} nums
388
433
* @param {number} x
389
434
* @returns {number}
390
435
*/
391
436
function searchInsertRight(nums, x) {
392
437
// 题意转换一下,其实就是寻找第一个“大于” x 的数字,返回它的下标
438
+ // Change the meaning of the question, in fact, it is to find the first number "greater than" x and return its subscript
393
439
let left = 0;
394
440
let right = nums.length - 1;
395
441
0 commit comments