算法 | 整理数据结构 | 算法题中,JS 容器的选择

总结:算法题 JS 容器选择速查表

需求 用什么
是否出现过 Set
不同元素个数 Set.size
频率统计 Map
顺序访问 Array / String
随机访问 Array / String
去重 Set
哈希查找 Set / Map

JS 容器范式手册:Set、Map、字符串、数组

注意,区分 "值容器 "和"结构容器"


一、String(字符串)范式

字符串是只读的、类数组结构

javascript 复制代码
let s = "abcde";

s.length        // 5
s[0]            // "a"
s.charAt(0)     // "a"

// 算法遍历范式:
for (let i = 0; i < s.length; i++) {
    let ch = s[i];
}

二、Array(数组)范式

数组是有序容器 + 有 length

javascript 复制代码
let arr = [10, 20, 30];

arr.length   // 3
arr[1]       // 20

// 遍历范式:
for (let i = 0; i < arr.length; i++) {}
for (const x of arr) {}

// 判重(慢):
arr.includes(x)   // O(n)

三、Set(去重集合)范式

Set = 无序、唯一元素集合

javascript 复制代码
let set = new Set();

set.add("a")
set.add("b")
set.add("a") // 不会重复

set.size // 2

算法题标准用法

1️⃣ 统计不同元素
javascript 复制代码
let set = new Set();
for (let x of arr) {
    set.add(x);
}
let distinct = set.size;
2️⃣ 判断是否存在

set.has(x)

3️⃣ 清空集合

set.clear()


四、Map(计数器 / 哈希表)范式

Map = key → value(非常适合频率统计)

let map = new Map();

1️⃣ 计数范式(高频)

javascript 复制代码
for (let ch of s) {
    map.set(ch, (map.get(ch) || 0) + 1);
}

2️⃣ 取值

map.get("a") // undefined 或 数字

3️⃣ 判断是否存在

map.has("a")

相关推荐
码事漫谈3 小时前
当AI开始“思考”:我们是否真的准备好了?
前端·后端
2301_764441333 小时前
LISA时空跃迁分析,地理时空分析
数据结构·python·算法
东北洗浴王子讲AI3 小时前
GPT-5.4辅助算法设计与优化:从理论到实践的系统方法
人工智能·gpt·算法·chatgpt
许杰小刀3 小时前
ctfshow-web文件包含(web78-web86)
android·前端·android studio
Billlly4 小时前
ABC 453 个人题解
算法·题解·atcoder
我是Superman丶4 小时前
Element UI 表格某行突出悬浮效果
前端·javascript·vue.js
恋猫de小郭4 小时前
你的代理归我了:AI 大模型恶意中间人攻击,钱包都被转走了
前端·人工智能·ai编程
玉树临风ives4 小时前
atcoder ABC 452 题解
数据结构·算法
feifeigo1235 小时前
基于马尔可夫随机场模型的SAR图像变化检测源码实现
算法
xiaokuangren_5 小时前
前端css颜色
前端·css