- 博客(9)
- 收藏
- 关注
原创 0509|942. 增减字符串匹配
0509|942. 增减字符串匹配 贪心:根据提干规则,输入的 s 字符串长度为 n,输出的 perm 的长度就是 n + 1, 那么可以定义 perm 中所有 number 的范围为 [0, n]。其中 min = 0, max = n; 我们可以这样想,如果: s[i] == 'I',那么只要 perm[i] 尽可能小就可满足条件,那只需要把当前最小的 min 放入即可,同时把 min++; s[i] == 'D' ,同样的放入当前最大的值 max 即可,然后把 max++; perm 直到最后一
2022-05-14 02:32:45
77
原创 0508|442. 数组中重复的数据
0508|442. 数组中重复的数据 方法一:set 遍历时,用 set 保存数据,当遍历到重复内容(set.has()),则 push 到结果中。 时间复杂度:O(n),空间复杂度:O(n); var findDuplicates = function(nums) { if (nums.length < 2) return []; const set = new Set(); const res = []; for (let n of nums) { if (set.has
2022-05-14 02:31:45
75
原创 0507|433. 最小基因变化
0507|433. 最小基因变化 一个 bfs / dfs 的应用题。 历年没考过,但思路不错。 方法一:bfs const CHARS = ["A", "C", "G", "T"] var minMutation = function (start, end, bank) { const bankSet = new Set(bank); const queue = [{ gene: start, step: 0 }]; // bfs while (queue.length) {
2022-05-14 02:31:03
67
原创 0506|933. 最近的请求次数
0506|933. 最近的请求次数 队列的动态存储,不需要的值就及时抛弃(每次把超时的踢掉) this 的使用,原型链时间长了有点忘。 复杂度: 时间复杂度:均摊 O(1),每个元素最多 入队 / 出队 各一次。 空间复杂度:O(L),L 为队列的元素个数。 var RecentCounter = function () { this.queue = []; }; RecentCounter.prototype.ping = function (t) { this.queue.push(t
2022-05-14 02:29:24
116
原创 0505|713. 乘积小于 K 的子数组
每日一题|0505|713. 乘积小于 K 的子数组 0505|713. 乘积小于 K 的子数组 mid 滑动窗口。 求连续子树组的个数,“连续子树组”很强的暗示———使用滑动窗口。 本题只需记录 以每个数字为右边界所形成的有效子数组的个数 ==> right - left + 1 。 注意: 如果 k 为 <= 1 时,一定不存在有效结果,直接返回 0; 每次 while 循环,窗口因 right 都会向右扩展。 然后需要根据条件 count 小于总数 k,通过移动 left 收
2022-05-14 02:17:08
70
原创 0504|1823. 找出游戏的获胜者
每日一题|0504|1823. 找出游戏的获胜者 0504|1823. 找出游戏的获胜者 这道题使用队列也可以。 遍历 quene 时,从队尾拿出一个成员,然后再从对头插入。如此循环。 这里使用的是链表: var findTheWinner = function (n, k) { // 边界 if (k === 1) return n; // 构造一个循环链表 const head = new TreeNode(1); let point = head; for (let i =
2022-05-14 02:15:37
376
原创 0503|937. 重新排列日志文件
每日一题 | 0503 | 937. 重新排列日志文件 0503 | 937. 重新排列日志文件 对 sort 的灵活运用。 var reorderLogFiles = function (logs) { // 保存 0 和 9 字母的code值 const ZERO = '0'.charCodeAt(0); // 48 const NINE = '9'.charCodeAt(0); // 57 // 原地排序 logs.sort((a, b) => { // 判断
2022-05-14 02:10:30
65
原创 0502 | 591. 标签验证器
0502 | 591. 标签验证器 正则: 正则表达式不要背. 留个标记,winter 玩具浏览器 toy browser 可以按照这个思路优化。 1. 正则中 .*? 是什么意思? . : 匹配 1 个字符,匹配 任何 单个字符; * :匹配 ≥ 0 个字符,匹配 在它之前的那个 字符。 ?:匹配 0|1 个字符,匹配 在它之前的那个 字符。 所以: .*:匹配任何字符 ≥ 0 个; .?:匹配任何字符 0|1 个; 那么: .*? : 匹配表示匹配任意字符到下一个符合条件的字符。 例子
2022-05-14 02:05:06
211
原创 0501|1305. 两棵二叉搜索树中的所有元素
每日一题 | 0501|1305. 两棵二叉搜索树中的所有元素 0501|1305. 两棵二叉搜索树中的所有元素 暴力解: 递归中序遍历,把结果全部写的 res 中,然后 sort 排序; 优化空间:见官方解法, 用 num1 和 nums2 分别拿到 root1 和 root2 中序遍历的结果,是递增的; 然后利用双指针 p1 和 p2 把 num1 和 num2 合并到 res 数组中。时间复杂度为 O(m+n) var getAllElements = function (root1,
2022-05-14 02:03:18
130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人