977.有序数组的平方 简单题
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortedSquares = function(nums) {
const arr = []
for(let i = 0; i < nums.length;i++){
arr[i] = nums[i]*nums[i]
}
return arr.sort((a,b)=> a-b)
};
209.长度最小的子数组
考察: 不定滑窗三部曲, 记住要先求得结果, 再更新left
/**
* @param {number} target
* @param {number[]} nums
* @return {number}
*/
var minSubArrayLen = function (target, nums) {
let ans = Infinity
let left = 0
let windowNum = 0
for (let left = 0, right = 0; right < nums.length; right++) {
// a1 右移做什么
windowNum += nums[right]
// a2 当满足条件时做什么
while (windowNum >= target) {
// a3 什么时候更新答案
ans = Math.min(ans, right - left + 1)
let leftNum = nums[left]
windowNum -= leftNum
left += 1
}
}
return ans===Infinity? 0: ans
};
59.螺旋矩阵II
考察点: 边界处理, 左闭右开原则, offset设计, 奇数点
/**
* @param {number} n
* @return {number[][]}
*/
var generateMatrix = function (n) {
let startX = 0
let startY = 0
let count = 1
let offset = 1
let loop = Math.floor(n / 2)
let mid = Math.floor(n / 2)
const res = Array(n).fill(0).map(() => Array(n).fill(0))
while (loop--) {
let row = startX
let col = startY
// 左闭右开原则
for (; col < n - offset; col++) {
res[row][col] = count++
}
for (; row < n - offset; row++) {
res[row][col] = count++
}
for (; col > startY; col--) {
res[row][col] = count++
}
for (; row > startX; row--) {
res[row][col] = count++
}
startX += 1
startY += 1
offset += 1
}
if (n % 2 === 1) {
res[mid][mid] = count
}
return res
};