欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

LeetCode每日[2022

时间:2023-05-27
2022-02-13 两个数组的交集 II

两层循环

两层循环比较元素, 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; };

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。