堆 (优先队列)主要学习的是树形结构的二叉堆(Binary Heap)。 学习目标 堆排序 大(小)顶堆 优先级队列 性质二叉堆还分为最大堆和最小堆。最大堆的性质是:每个节点都大于等于它的两个子节点。最小堆的性质是:每个节点都小于等于它的子节点。 最顶端的节点的值最大 还未深入学习。。。 (数据流中的第 k 大元素)[https://leetcode-cn.com/problems/kth-la
字符串匹配普通优化版本12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061function findSubStrIndex(str, subStr) { /* 算法思想: i:s
代码随想录https://programmercarl.com/%E5%89%8D%E5%BA%8F/%E6%B7%B1%E5%9C%B3%E4%BA%92%E8%81%94%E7%BD%91%E5%85%AC%E5%8F%B8%E6%80%BB%E7%BB%93.html#%E5%85%B6%E4%BB%96%E8%A1%8C%E4%B8%9A-%E6%9C%89%E8%BD%AF%E4%BB
巧妙的题相同类型的题目借助高低位,原地解决问题的一种算法思路,目前还没有研究透测。已经看到两次了。 重新排列数组 基于排列构建数组 叶子结点序列相同的树 迭代法,同步遍历,非常牛逼的一个思路. 原地构建给你一个 从 0 开始的排列 nums(下标也从 0 开始)。请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length
感想2021-12-25刷题,渐渐找到了一点门路,这无疑让我有点欣喜,现在开始写题解,尝试把自己的思路一一写出来,这也是一种锻炼,也为了加深印象。目前,涉略比较熟悉的数据结构算法,有二叉树,栈,队列,回溯算法,以及动态规划,二分法是在太难了。一些经典的算法也没来得级回顾。 我是怎么面对问题的?我为什么会从那方面想?是因为先前的知识与现有的题目产生了链接。解题的套路如下: 纸上推演一番构造解 看看
整数反转 https://leetcode-cn.com/problems/reverse-integer/ 123456789101112131415161718192021222324252627/** * @param {number} x * @return {number} */var reverse = function (x) {
最长重复子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 123输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 我的暴力解法算法思路: 创建一个 hash 表(查询专用) 初始化 max,count(计算无重复子串达到的值) 当元素没在 hash 表中,加入 ha
栈栈:一种专注于顶部元素进入进出的操作。 栈的应用 浏览器历史记录 代码的执行 正所谓空间换时间,有时候借助栈,我们能够缩短操作 简单的例子关于栈的思考栈就是一个后进先出的一个数据结构,一般解决问题,就要借助它的这种特性。 单调栈为此栈的结构是递增或者递减的一种栈结构特性,求解”下一个大的数的”或者下一个小的问题” 一般的模版如下: 1234567891011121314let stack =