亮神知识库 亮神知识库
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)

亮神

前程明亮,未来可期
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)
  • 刷题

    • 算法
    • 排序
    • LeetCode
      • ASI
      • Array.prototype.sort
      • 三元运算符
      • 退出for循环
      • 滑动窗口
      • 动态规划
      • 单调栈
      • 排列&&组合
      • 贪心
      • 链表
  • 杂(待整理)

  • 学习

  • 面试

  • 实用技巧

  • 心情杂货

  • 年度总结

  • 友情链接
  • 更多
  • 刷题
0zcl
2025-06-19
目录

LeetCode

  1. 1 & 3 === 1 注意:=== 的优先级比 & 高 运算符优先级 (opens new window)、318. 最大单词长度乘积 (opens new window)

    1. 左移
    2. 位掩码
  2. 当n=2^31^ - 1时,计算 n+1 会导致溢出,因此我们可以使用整数除法 Math.floor(n/2)+1, Math.floor(n/2) 分别计算 (n+1)/2,(n-1)/2 397. 整数替换 (opens new window)

  3. 遍历map 594. 最长和谐子序列 (opens new window)

const map = new Map()
map.set('a', 1)
map.set('b', 2)
map.size // 2
map.forEach((value, key) => {
  console.log(value, key)
})
// 1 'a'
// 2 'b'
map.has('a') // true
map.has('aa') // false
map.get('aa') // undefined
1
2
3
4
5
6
7
8
9
10
11
12
  1. 859. 亲密字符串 (opens new window)
  • 对于字符串s,s[index] ='xx' 实际上不会改变s
s = 'zcl'
s.split('') // ['z', 'c', 'l']
['z', 'c', 'l'].join() // 'z,c,l' 默认用,合并
['z', 'c', 'l'].join('') // 'zcl'
1
2
3
4

# ASI

  • ASI(automatic semicolon insertion)自动分号插入是一种程序解析技术. JavaScript 程序的语法分析 (parsing) 阶段起作用

用数组解析交换变量,出现错误。

ssi

利用自动分号插入,JS会自动为代码行补上缺失的分号;ASI 只在换行符处起作用;如果 JavaScript 解析器发现代码行可能因为缺失分号而导致错误,那么它就会自动补上分号。

实际应用上,本人不习惯也分号。不过也要注意,以中括号<code>[</code>, 小括号<code>(</code>开头的代码行,的前一行要加分号

备胎的自我修养——趣谈 JavaScript 中的 ASI (Automatic Semicolon Insertion) (opens new window)

# Array.prototype.sort

arr = [4, 2, 5, 1, 33];
Array.prototype.sort.call(arr) // [1, 2, 33, 4, 5]
arr.sort((a, b) => a - b) // [1, 2, 4, 5, 33] 从小到大
1
2
3

如果没有指明 compareFunction ,那么元素会按照转换为的字符串的诸个字符的Unicode位点进行排序。

比较的数字会先被转换为字符串,所以在Unicode顺序上 "33" 要比 "4" 要靠前。

# 三元运算符

a = [1]
b = [2]
-1 ? a : b // [1] 易出错
-1 > 0 ? a : b

if (-1) {console.log('ab')} // 'ab' 会打印的!
1
2
3
4
5
6

注意:条件表达式,不要只用负数。用true、false、0、1 165. 比较版本号 (opens new window)

# 退出for循环

  • continue: 退出当前循环迭代,开始循环的一次新迭代
  • break: 退出for循环
  • return: 退出函数 860. 柠檬水找零 (opens new window)
  1. String.prototype.repeat()
'z'.repeat(3) // 'zzz'
1

# 滑动窗口

438. 找到字符串中所有字母异位词 (opens new window)

# 动态规划

1218. 最长定差子序列 (opens new window)

# 单调栈

通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。

为什么?能想到单调栈?

遍历数组入栈,不符合单调则出栈,那么遍历数组后,仍存在栈中的元素或下标,就是找不到比元素更大或更小的了,才会存在栈中。 不符合单调则出栈,出栈时,知道出栈元素和第一个比出栈元素大或小的元素(就是入栈元素!)

  • 739. 每日温度 (opens new window)
  • 496. 下一个更大元素 I (opens new window)
  • 下一个更大元素 II (opens new window)

# 排列&&组合

  • 46. 全排列 (opens new window)
/*
1. 三个坑位,每个坑位放数组的一个元素,不能重复放
2. dfs(0):第一个坑放元素. 
3. dfs中,一个元素不能放多次,用一个map key为元素值, value为表示该元素值已经放到坑里了, 不能再放到坑里
4. dfs递归,终止条件:参数===nums.length
*/
1
2
3
4
5
6
  • 47. 全排列 II (opens new window)
  • 77. 组合 (opens new window)

# 贪心

局部最优 --> 全局最优

  • 1005. K 次取反后最大化的数组和 (opens new window)
  • 455. 分发饼干 (opens new window)
  • 121. 买卖股票的最佳时机 (opens new window)
  • 122. 买卖股票的最佳时机 II (opens new window)

# 链表

  • 206. 反转链表 (opens new window)
编辑 (opens new window)
上次更新: 2025/07/20, 08:30:18
排序
source map深入

← 排序 source map深入→

最近更新
01
2024年
07-20
02
2023年
07-20
03
2022年
07-20
更多文章>
Theme by Vdoing | Copyright © 2025-2025 亮神 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式