程序员模拟器不完整普通攻略

修改于02/24302 浏览攻略
质数
引入算法效率概念,利用数学性质(平方根)优化验证范围
通过从2到其平方根的试除来验证,一旦发现可整除的数则立即中断,以此高效判断质数
limit:是Math.sqrt(n)(n 的平方根)的计算结果,它是一个临时变量,用来存储我们循环检查的上限值
Math.sqrt(n):JavaScript内置的数学函数,用于计算一个数 n 的平方根
TapTap
上楼梯
next:一个临时变量,在动态规划的滑动窗口更新中充当 “中转站” ,用于安全地存储新计算出的结果,防止在更新其他状态变量时丢失数据
TapTap
最大公约数
gcd:最大公约数 的英文缩写,全称为 Greatest Common Divisor
欧几里得算法公式:gcd(a, b) = gcd(b, a mod b)
通用公式:
gcd(a, b)   = gcd(b, a)
            = gcd(|a|, |b|)
            = gcd(a, b mod a)   // 如果a≠0
Math.abs() :JavaScript 中的一个内置数学函数,用于返回一个数字的绝对值
Math:JavaScript 的内置数学对象,包含各种数学函数和常量
abs:"absolute"(绝对值)的缩写
欧几里得算法:或称辗转相除法,是计算两个正整数最大公约数的高效算法
TapTap
最小公倍数
lcm:最小公倍数的英文缩写,全称为Least Common Multiple
公式:lcm = a × b ÷ gcd(a, b)
TapTap
斐波那契数列
递推公式:F(n) = F(n-1) + F(n-2) 
比内公式:F(n) = (φ^n - (-φ)^(-n)) / √5
prev和curr是在迭代计算斐波那契数列时使用的两个关键变量
prev:代表前一个斐波那契数 即F(n-2)
curr:代表当前斐波那契数 即F(n-1)
TapTap
数字根
digital root:把一个大数字"压缩"成一个0-9的个位数,是数学中的简化工具,也是编程中的实用函数
1. 把数字拆成各位数字
2. 将所有数字相加得到和
3. 如果和≥10,重复步骤1-2
4. 直到得到个位数
TapTap
最大值
findMax:"找最大值"的函数,输入一堆数字,输出其中最大的那个
TapTap
sum:求和、总和
Array:数组
sumArray:求数组元素的和
total:总计、总和
i:index的缩写,表示索引、下标
arr:array的缩写,数组
length:长度
arr.length:数组的长度(元素个数)
TapTap
罗马数字
romanToInt:罗马转整数的函数
romanMap:字符到数值的映射表
currentVal/nextVal:用于实现减法规则
int:integer(整数)的缩写
Roman:罗马、罗马数字
intToRoman:整数转罗马数字的函数
values:数值数组
symbols:符号数组
result:结果字符串
暂时没有运行结果 一下子学太多新词汇 要长脑子了[TapFamily庆生-万物皆可联动_躺]
TapTap
有效括号
stack(栈):后进先出,像一摞盘子
push(压入):往栈顶加元素
pop(弹出):从栈顶取元素
top(栈顶):最后一个放入的元素
empty stack(空栈):栈里没东西
match(匹配):左右括号是同一对
遇到左括号 ( [ { → 放进盒子(放在最上面)
遇到右括号 ) ] } → 从盒子最上面拿出一个,看看是不是一对
是 → 继续
不是 → 失败
如果盒子里没东西了(空)却来了右括号 → 失败
最后,盒子必须是空的 → 成功
TapTap
合并有序数组
sorted(有序):数组里的数字按从小到大(或从大到小)排列,比如 [1, 3, 5] 就是有序的
merge(合并):把两个东西合在一起
这里就是把两个数组拼成一个
two pointers(双指针):用两个“手指”分别指着两个数组当前要比较的位置
谁小就把谁放进结果里,然后移动对应的手指
pointer(指针):数组的索引,表示当前读到哪个位置了
TapTap
岛屿数量
网格(grid):二维数组,每个格子存一个字符 '1' 或 '0'。
岛屿(island):上下左右连成一片的 '1' 组成的区域。
深度优先搜索(DFS):从某个 '1' 开始,一路向四个方向走到底,把所有能走到的 '1' 都标记为已访问,这样就能找到一个完整的岛屿。
标记(mark):把走过的 '1' 变成 '0',防止重复计算。
相邻(adjacent):上下左右四个方向,不算对角线。
遍历地图 → 遇1则计数 → 淹掉整个岛 → 继续遍历 → 完事
TapTap
两数之和
target(目标值):要找的两个数加起来等于的那个数
哈希表(hash table):一种用键值对存储数据的数据结构,可以快速查找某个值是否存在
在 JavaScript 里可以用普通对象 {} 或 Map 模拟
下标(index):数组元素的位置,从 0 开始数
暴力枚举(brute force):把所有可能的两数组合都试一遍,找出符合条件的
对于数组里的每个数 x,找 target - x 在不在哈希表里
猜你想搜
程序员模拟器 欧几里得算法
12
7
3