随笔分类 - 算法随想
小白刷题,望多多指教
摘要:二叉树层次遍历的相关题目 102.二叉树的层序遍历 107.二叉树的层次遍历II 199.二叉树的右视图 637.二叉树的层平均值 429.N叉树的层序遍历 515.在每个树行中找最大值 116.填充每个节点的下一个右侧节点指针 117.填充每个节点的下一个右侧节点指针II 104.二叉树的最大深度
阅读全文
摘要:LC144、LC145、LC94-二叉树的前中后遍历 二叉树递归遍历 比较容易实现 struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x = 0) : val(x), left(nullptr), rig
阅读全文
摘要:LC239. 滑动窗口最大值 思路分析: 1、暴力出奇迹,对n个元素各遍历k次,记录最大值,复杂度O(n * k) 2、如果存在一种数据结构,能模拟滑动串口,且能提供pop()、push()、getMaxValue()三种接口,该题目就简单易得了。但现在不存在这样一种数据结构 3、使用优先级队列(大
阅读全文
摘要:LC20. 有效的括号 做法和思路比较简单直接,没考虑代码的优化和简洁性 bool isValid(string s) { int i; int size = s.size(); stack<char> sta; for (i = 0; i < size; i++) { int ch = 0; if
阅读全文
摘要:LC232. 用栈实现队列 之前看过相关的实现方法,但在想具体实现上,还是略显冗余。 我的思路是,用一个标志位method记录当前是push或pop/top操作,如果有操作的更换,都进行一次栈元素转移,实则是多余操作。 Carl讲解,分别定义一个StaIn和StaOut,StaOut因为是用于pop
阅读全文
摘要:KMP算法 前缀是包含首字母,不包含尾字母的所有子串。 后缀是包含尾字母,不包含首字母的所有子串。 如有: 文本串 aabaabaaf 模式串 aabaaf 对模式串来说,其前后缀: | 前缀有 | 后缀有 | | | | | a | f | | aa | af | | aab | aaf
阅读全文
摘要:LC344. 反转字符串 void reverseString(vector<char>& s) { int size = s.size(); int left = 0, right = size - 1; while (left < right) { s[left] ^= s[right]; s[
阅读全文
摘要:LC454. 四数之和Ⅱ 先按O(n^2)将4组分成两组后,再按照两数之和的做法即可。其中umap中存储的value值是key出现的次数。 int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vec
阅读全文
摘要:哈希表理论知识 C++常见的三种哈希结构 数组 set(集合) map(映射) 在C++中,set 和 map 分别提供以下三种数据结构,其底层实现以及优劣如下表所示: | 集合 | 底层实现 | 是否有序 | 数值是否可以重复 | 能否更改数值 | 查询效率 | 增删效率 | | | | | |
阅读全文
摘要:LC203. 移除链表元素 本题最关键是要理解虚拟头结点的使用技巧,这个对链表题目很重要。 自己在做时,定义了一个虚拟头节点,然后又分别定义了ptr和prev指向迭代中当前的节点和上一个节点,定义的变量有点多,但是这种思路更容易想出且更方便个人理解。 /** * Definition for sin
阅读全文
摘要:LC977. 有序数组的平方 有了昨天刷题的总结和思考,根据: 条件left <= right,总与右边界right = numsize - 1,nums[right]成对 条件left < right,总与右边界right = numsize,nums[right - 1]成对 比较轻松地解决了容
阅读全文
摘要:LC704. 二分查找 二分法编码时的难点,在于对数组边界问题的处理上。处理该问题的思想有两种,这两者的区别是基于数学里区间的概念去解释的。 对于区间,[1,1]的取值是合理的,而[1,1)是不合理的。 左闭右闭写法: 因为[1,1]是合理的,所以left是可以等于right的,而且在更新索引下
阅读全文

浙公网安备 33010602011771号