Leetcode 刷题笔记 - 1
2023-04-18 14:48:28 时间
1、利用动态数组解决数据存放问题
编写一段代码,要求输入一个整数N
,用动态数组A
来存放2~N
之间所有5或7的倍数,输出该数组。
示例:
输入:
N = 100
输出:
5 7 10 14 15 20 21 25 28 30 35 40 42 45 49 50 55 56 60 63 65 70 75 77 80 84 85 90 91 95 98 100
复制代码
题解:
该题利用数组数组结构,打印出 2~N 即可,注意去重和排序。
/**
* 利用动态数组解决数据存放问题
* @param {number[]} N
* @return {number[]}
*/
let dynamicArray = (N) = >{
if (N < 5) {
return []
}
let A = [] let base = 1
while (true) {
if (base * 5 <= N) {
A.push(base * 5) if (base * 7 <= N) {
A.push(base * 7)
}
base++
} else {
break
}
}
let res = Array.from(new Set([...A])) res = res.sort((a, b) = >{
return a - b
}) return res
}
复制代码
2、托普利茨矩阵问题
如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。
给定一个M x N
的矩阵,当且仅当它是托普利茨矩阵时返回True
。
示例:
输入:
matrix = [
[1,2,3,4],
[5,1,2,3],
[9,5,1,2]
]
输出: True
复制代码
解释:
在上述矩阵中, 其对角线为: "[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]"
。 各条对角线上的所有元素均相同, 因此答案是True
。
题解:
遍历 matrix[rows.length-1][columns.length-1]判断是否与右下角相同即可。
/**
* 托普利茨矩阵问题
* @param {number[][]} matrix
* @return {boolean}
*/
let isToeplitzMatrix = (matrix) = >{
for (let i = 0; i < matrix.length - 1; i++) {
for (let j = 0; j < matrix[i].length - 1; j++) {
if (matrix[i][j] !== matrix[i + 1][j + 1]) {
return false
}
}
}
return true
}
复制代码
3、三数之和
给定一个包含 n 个整数的数组nums
,判断nums
中是否存在三个元素a,b,c
,使得a + b + c = 0
?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例:
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
复制代码
题解:
LeetCode 经典题(头条面试必考题),双指针 + 排序
/**
* 三数之和
* @param {number[]} nums
* @return {number[][]}
*/
let threeSum = (nums) = >{
nums.sort((a, b) = >{
return a - b
}) let result = []
for (let i = 0; i < nums.length; i++) {
if (i === 0 || nums[i] > nums[i - 1]) {
let j = i + 1 let k = nums.length - 1
while (j < k) {
s = nums[i] + nums[j] + nums[k]
if (s == 0) {
result.push([nums[i], nums[j], nums[k]]) j++;
k--;
while (j < k && nums[j] == nums[j - 1]) {
j++;
}
while (j < k && nums[k] == nums[k + 1]) {
k--;
}
} else if (s > 0) {
k--;
} else {
j++;
}
}
}
}
return result
}
复制代码
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击