Skip to content

Commit 0655161

Browse files
Merge pull request #209 from flames519/master
数组 0704,0209, 0059javascript版本
2 parents f783100 + 10a3433 commit 0655161

File tree

3 files changed

+97
-12
lines changed

3 files changed

+97
-12
lines changed

problems/0059.螺旋矩阵II.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,49 @@ class Solution:
224224
return matrix
225225
```
226226

227+
javaScript
228+
229+
```js
230+
231+
/**
232+
* @param {number} n
233+
* @return {number[][]}
234+
*/
235+
var generateMatrix = function(n) {
236+
// new Array(n).fill(new Array(n))
237+
// 使用fill --> 填充的是同一个数组地址
238+
const res = Array.from({length: n}).map(() => new Array(n));
239+
let loop = n >> 1, i = 0, //循环次数
240+
count = 1,
241+
startX = startY = 0; // 起始位置
242+
while(++i <= loop) {
243+
// 定义行列
244+
let row = startX, column = startY;
245+
// [ startY, n - i)
246+
while(column < n - i) {
247+
res[row][column++] = count++;
248+
}
249+
// [ startX, n - i)
250+
while(row < n - i) {
251+
res[row++][column] = count++;
252+
}
253+
// [n - i , startY)
254+
while(column > startY) {
255+
res[row][column--] = count++;
256+
}
257+
// [n - i , startX)
258+
while(row > startX) {
259+
res[row--][column] = count++;
260+
}
261+
startX = ++startY;
262+
}
263+
if(n & 1) {
264+
res[startX][startY] = count;
265+
}
266+
return res;
267+
};
268+
```
269+
227270

228271

229272
-----------------------

problems/0209.长度最小的子数组.md

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -175,19 +175,24 @@ Go:
175175

176176

177177
JavaScript:
178-
```
179-
var minSubArrayLen = (target, nums) => {
180-
let left = 0, right = 0,win = Infinity,sum = 0;
181-
while(right < nums.length){
182-
sum += nums[right];
183-
while(sum >= target){
184-
win = right - left + 1 < win? right - left + 1 : win;
185-
sum -= nums[left];
186-
left++;
187-
}
188-
right++;
178+
179+
```js
180+
181+
var minSubArrayLen = function(target, nums) {
182+
// 长度计算一次
183+
const len = nums.length;
184+
let l = r = sum = 0,
185+
res = len + 1; // 子数组最大不会超过自身
186+
while(r < len) {
187+
sum += nums[r++];
188+
// 窗口滑动
189+
while(sum >= target) {
190+
// r始终为开区间 [l, r)
191+
res = res < r - l ? res : r - l;
192+
sum-=nums[l++];
193+
}
189194
}
190-
return win === Infinity? 0:win;
195+
return res > len ? 0 : res;
191196
};
192197
```
193198

problems/0704.二分查找.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,43 @@ func search(nums []int, target int) int {
254254
}
255255
```
256256

257+
javaScript
258+
259+
```js
260+
261+
// (版本一)左闭右闭区间
262+
263+
var search = function(nums, target) {
264+
let l = 0, r = nums.length - 1;
265+
// 区间 [l, r]
266+
while(l <= r) {
267+
let mid = (l + r) >> 1;
268+
if(nums[mid] === target) return mid;
269+
let isSmall = nums[mid] < target;
270+
l = isSmall ? mid + 1 : l;
271+
r = isSmall ? r : mid - 1;
272+
}
273+
return -1;
274+
};
275+
276+
// (版本二)左闭右开区间
277+
278+
var search = function(nums, target) {
279+
let l = 0, r = nums.length;
280+
// 区间 [l, r)
281+
while(l < r) {
282+
let mid = (l + r) >> 1;
283+
if(nums[mid] === target) return mid;
284+
let isSmall = nums[mid] < target;
285+
l = isSmall ? mid + 1 : l;
286+
// 所以 mid 不会被取到
287+
r = isSmall ? r : mid;
288+
}
289+
return -1;
290+
};
291+
292+
```
293+
257294

258295

259296

0 commit comments

Comments
 (0)