朴素算法Bare Algo

数组

数组相关的基础与进阶算法,包含双指针、滑动窗口等技巧。

算法题

(16)
1. 两数之和
简单
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
数组哈希表
283. 移动零
简单
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
数组双指针
56. 合并区间
中等
以数组 intervals 表示若干个区间的集合,其中 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组。
数组排序
238. 除了自身以外数组的乘积
中等
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
数组前缀和
560. 和为 K 的子数组
中等
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。
数组哈希表前缀和
169. 多数元素
简单
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
数组哈希表分治排序计数
215. 数组中的第K个最大元素
中等
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
数组分治排序堆快速选择
53. 最大子数组和
中等
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
数组分治动态规划
88. 合并两个有序数组
简单
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
数组双指针排序
121. 买卖股票的最佳时机
简单
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。
数组动态规划
73. 矩阵置零
中等
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
数组哈希表矩阵
189. 轮转数组
中等
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
数组数学双指针
41. 缺失的第一个正数
困难
给你一个未排序的整数数组 nums,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。
数组哈希表
54. 螺旋矩阵
中等
给你一个 m 行 n 列的矩阵 matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。
数组矩阵模拟
48. 旋转图像
中等
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像。
数组数学矩阵
240. 搜索二维矩阵 II
中等
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有特性:每行的元素从左到右升序排列,每列的元素从上到下升序排列。
数组二分查找分治矩阵

实际应用

(13)
列表/表格数据处理
简单
在前端业务中,列表和表格是最常见的数据展示形式。涉及对数组进行排序、分页计算、分组嵌套、去重以及聚合统计等操作。
表格数据处理
虚拟列表
中等
处理长列表渲染时,根据 scrollTop 计算当前可视窗口的 start/end 索引,对大数据数组进行切片(Slice),只渲染可见部分。
性能优化虚拟滚动
时间轴/日历/会议室预订
中等
处理日程安排、会议室预订时,需要进行区间合并、冲突检测、查找空档时间段等操作。例如判断新会议是否与现有日程冲突。
日历时间轴区间问题
图表/埋点统计
中等
在可视化图表中,利用前缀和数组快速计算任意区间的统计数据;利用差分数组进行批量的数值更新。例如查询某时间段的累计 PV/UV。
可视化统计数据分析
Diff 基础 / 列表同步
困难
React/Vue 的 Diff 算法基础。涉及数组的重排(Reorder)、最长公共子序列(LCS)以及基于 key 的局部更新。适用于实时协同编辑、列表同步等场景。
框架原理Diff协同编辑
二维数组/矩阵操作
中等
处理 Excel 表格数据、热力图数据、棋盘游戏或 Canvas 画布数据时,涉及矩阵的旋转、遍历、置零等操作。例如根据权限清空某行/列数据。
表格图形学游戏开发
大数据分块 (Chunking)
中等
处理海量数据时,将大数组切分为多个小 Chunk 进行分片处理或渐进式渲染,避免长期占用主线程导致页面卡顿。适用于大文件上传、批量导入等场景。
性能优化Web Worker
数据归一化 (Normalization)
中等
类似 Redux State 的设计,将嵌套的对象数组转换为 ids 数组 + entities 字典,以提高列表渲染和更新的效率。适用于复杂状态管理场景。
状态管理设计模式
股票交易信号/价格分析
简单
在金融交易系统中,实时分析股票价格走势,寻找最佳买入/卖出时机。例如根据历史价格数据,计算在单次交易限制下的最大利润。
金融实时计算数据分析
搜索/自动补全
中等
实现搜索框的自动补全功能,根据用户输入实时过滤候选项。涉及数组的快速查找、排序、Top-K 筛选等操作。
搜索用户体验
排行榜/积分榜
中等
在游戏或社区应用中,实时更新用户积分排行榜。涉及数据的排序、Top-K 查询、增量更新等操作。
游戏社区排序
数据去重/清洗
简单
处理来自多个数据源的数据时,需要进行去重、合并、清洗等操作。例如合并多个 API 返回的用户列表并去除重复用户。
数据处理ETL
实时仪表盘
中等
在运营监控/数据大屏中,实时计算并展示关键指标。例如计算最近 N 条数据的最大连续增长区间、滑动窗口内的峰值等。
监控实时计算可视化