704.二分查找
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
let left = 0, right = nums.length - 1
while (left <= right) {
const mid = Math.floor((left + right) / 2)
if (target < nums[mid]) {
right = mid - 1
} else if (target > nums[mid]) {
left = mid + 1
} else {
return mid
}
}
return -1 // 若找不到则返回-1
};
27.移除元素
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function (nums, val) {
// 快慢指针
let fast = 0, slow = 0
for (; fast < nums.length; fast++) {
if (nums[fast] !== val) {
nums[slow++] = nums[fast]
}
}
return slow
};
977.有序数组的平方
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortedSquares = function (nums) {
// 双指针
let left = 0, right = nums.length - 1
const res = []
while (left <= right) {
const leftMulti = nums[left] * nums[left]
const rightMulti = nums[right] * nums[right]
if (leftMulti > rightMulti) {
res.push(leftMulti)
left++
} else {
res.push(rightMulti)
right--
}
}
// 从大到小 -> 从小到大
return res.reverse()
};
209.长度最小的子数组
/**
* @param {number} target
* @param {number[]} nums
* @return {number}
*/
var minSubArrayLen = function (target, nums) {
let res = Infinity
// 双指针
let start = 0, end = 0
let sum = 0
for (; end < nums.length; end++) {
sum += nums[end]
while (sum >= target) {
res = Math.min(res, end - start + 1)
sum -= nums[start++]
}
}
return res === Infinity ? 0 : res // 若没有满足条件的则返回-1
};
59.螺旋矩阵
/**
* @param {number} n
* @return {number[][]}
*/
var generateMatrix = function (n) {
// 螺旋矩阵有统一写法,无论是正方形还是长方形,均可如下处理边界
let left = 0, right = n - 1, top = 0, bottom = n - 1
let cnt = 1 // 计数器
// 创建二维数组
const res = []
for (let i = 0; i < n; i++) {
res[i] = []
}
// 遍历
while (left <= right && top <= bottom) {
for (let i = left; i <= right; i++) {
res[top][i] = cnt++
}
for (let i = top + 1; i <= bottom; i++) {
res[i][right] = cnt++
}
if (left < right && top < bottom) {
for (let i = right - 1; i > left; i--) {
res[bottom][i] = cnt++
}
for (let i = bottom; i > top; i--) {
res[i][left] = cnt++
}
}
left++
top++
right--
bottom--
}
return res
};