November 29, 2022
大数相加 # 思路:从右到左循环去加
/** * js 大数相加 * 字符串拼接,用加法法则计算 * @param { string } a * @param { string } b * @returns string */ function sumBigNumber(a, b) { let res = "", temp = 0; /** @type {string[]} */ const arrA = a.split(""); /** @type {string[]} */ const arrB = b.split(""); while (arrA.length || arrB.length || temp) { // ~~ 将操作数转换成 int temp += ~~arrA.
...
May 31, 2022
Least recently used cache # 最近 最少 使用的缓存
解法: 双链表 + hash 表
/** * Least Recently Used cache * Get: O(1), hash 表 * Put: O(1),需要维持顺序,最近最少使用的节点要删掉 * * 双向链表 */ class LRUCache { constructor(capacity) { // 当前元素数量 // 容量上限 this.capacity = capacity; /** @type {{[index: number]: LinkedListNode}} */ this.cache = {}; // 当前容量 this.size = 0; // 伪头结点 this.
...
May 31, 2022
组合 # 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。
1 <= n <= 20
1 <= k <= n
题解 # /** * n 选 k 共有多少个组合情况 * @param {number} n * @param {number} k */ const combine = (n, k) => { const ans = []; /** * @param {number} k 子集的元素数 * @param {number} start 从第几个开始选 * @param {number} list 子集数组 */ const getCombine = (k, start, list) => { if (k === 0) { // 选满了 ans.
...