两层循环
两层循环比较元素, Array.prototype.splice() 去除 nums2 已相等的元素
var intersect = function(nums1, nums2) {
let result = [];
for(let e of nums1) {
for(let i = 0; i< nums2.length; i++) {
if(e === nums2[i]) {
result.push(e);
nums2.splice(i, 1);
break;
}
}
}
return result;
};
排序 + 双指针
先排序, 之后利用双指针来比较元素.
var intersect = function(nums1, nums2) {
let result = [];
// 定义两个指针
let i1 = 0, i2 = 0;
// 定义排序方法
let sortMethod = (a, b) => a - b;
nums1.sort(sortMethod); nums2.sort(sortMethod);
while(i1 < nums1.length && i2 < nums2.length) {
// 当 nums1[i1] < nums2[i2] 时, 需要移动指针 i1 至 nums1[i1] >= nums2[i2], 直接将前面的排除掉, 不可能相等
while(nums1[i1] < nums2[i2]) i1++;
if(nums1[i1] === nums2[i2]) {
result.push(nums1[i1]);
i1++; i2++;
}else {
// nums1[i1] > nums2[i2] 时, 指针 i2 向后移动一位
i2++;
}
}
return result;
};
重塑矩阵
数组扁平化
将 mat 扁平化, 用一个数组 temp 保存, 最后依次将 temp 中元素按 每次 c 个转移到 result 数组中.
var matrixReshape = function(mat, r, c) {
if(mat.length * mat[0].length !== r * c) return mat;
let result = [], temp = [];
mat.forEach((row) => {
temp = temp.concat(row);
})
while(temp.length !== 0) result.push(temp.splice(0, c));
return result;
};
杨辉三角
模拟
模拟每一步, 直接求解
var generate = function(numRows) {
let result = [];
for(let i1 = 0; i1 < numRows; i1++) {
if(i1 < 2) result.push(Array(i1 + 1).fill(1));
else {
let row = Array(i1 + 1).fill(1);
for(let i2 = 1; i2 < i1; i2++) {
row[i2] = result[i1 - 1][i2 - 1] + result[i1 - 1][i2];
}
result.push(row);
}
}
return result;
};


![LeetCode 每日 [ 2022 - 02 - 13 ] LeetCode 每日 [ 2022 - 02 - 13 ]](http://www.mshxw.com/aiimages/31/739411.png)
