剑指offer
刷题总结
无问东西 听从我心
这个作者很懒,什么都没留下…
展开
-
基本数据结构模板
链表 * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * };原创 2021-12-13 10:56:30 · 831 阅读 · 0 评论 -
剑指 Offer 41. 数据流中的中位数(优先队列-堆)
我们没有必要把所有数据进行排序。只需要保证数据左半边的数都小于右半边的数,那么根据左半边的数的最大值及右半边的数的最小值即可得到中位数。整个过程我们需要维护两个地方:两个堆的 size() 最大只能相差 1;大顶堆的 top() 必须小于等于小顶堆的 top()。class MedianFinder {public: /** initialize your data structure here. */ priority_queue<int, vector<in...原创 2021-12-13 10:34:51 · 300 阅读 · 0 评论 -
剑指 Offer 51. 数组中的逆序对
解读class Solution {public: int reversePairs(vector<int>& nums) { int len = nums.size(); if (len < 2) { return 0; // 若不存在数对,直接 return 0 } vector<int> helper(len); return reverse原创 2021-12-10 11:12:03 · 416 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围(dfs+bfs)
dfs代码class Solution {public: int movingCount(int m, int n, int k) { if(k == 0) return 1; vector<vector<bool> > valid(m, vector<bool>(n, true)); // 记录该位置是否被访问过 return dfs(valid, m, n, 0, 0, k); } int .原创 2021-12-09 10:07:49 · 367 阅读 · 0 评论 -
剑指 Offer 62. 圆圈中最后剩下的数字
原创 2021-12-08 10:22:24 · 65 阅读 · 0 评论 -
股票问题汇总(待总结)
原创 2021-12-08 09:53:23 · 164 阅读 · 0 评论 -
剑指 Offer 63. 股票的最大利润
原创 2021-12-08 09:51:27 · 71 阅读 · 0 评论 -
剑指 Offer 60. n个骰子的点数
class Solution {public: vector<double> twoSum(int n) { int dp[15][70]; memset(dp, 0, sizeof(dp)); for (int i = 1; i <= 6; i ++) { dp[1][i] = 1; } for (int i = 2; i <= n; i ++) { ...原创 2021-12-07 10:43:48 · 502 阅读 · 0 评论 -
(全排列+去重)剑指 Offer 20. 表示数值的字符串
还可以刷:leetcode47leetcode46:排列问题的写法排列问题leetcode40:详细讲解的去重的写法组合问题leetcode90:详细讲解的去重的写法子集问题去重一定要对元素经行排序,这样我们才方便通过相邻的节点来判断是否重复使用了。举例去重过程:如果要对树层中前一位去重,就用used[i - 1] == false,如果要对树枝前一位去重用used[i - 1] == true。对于排列问题,树层上去重和树枝上去重,都是可以的,但是树层上去重效率更高!用输入:原创 2021-12-06 10:41:51 · 63 阅读 · 0 评论 -
剑指offer位运算汇总总结
知识点1、异或 ^两数异或:相同为0,不同为1a^a=0a^0=aa^b ^c = a ^ c ^ b (交换律)2、>> 右移:正数前面补0,负数前面补13、<< 左移:补04、>>> 无符号右移 :前面补05、& 位与:检测有无1 (都为1则为1)某位置06、 | 位或:有1则为1某位置1题目剑指offer 15剑指offer 56-1剑指offer 64剑指offer 65加练:leetcode:原创 2021-12-05 15:52:33 · 147 阅读 · 0 评论 -
剑指 Offer 68 - II. 二叉树的最近公共祖先
出现频率高,重要,经典思路(递归和迭代)思路来自:https://mp.weixin.qq.com/s/n6Rk3nc_X3TSkhXHrVmBTQ——思路自底向上查找——二叉树如何可以自底向上查找呢?——回溯(二叉树回溯过程是从低到上)——后序遍历就是天然的回溯过程,最先处理的一定是叶子节点。总结:自底向上——回溯——后序查找接下来就看如何判断一个节点是节点q和节点p的公共公共祖先呢。「如果找到一个节点,发现左子树出现结点p,右子树出现节点q,或者 左子树出现结点q,右子树出现节点p,.转载 2021-12-05 15:03:18 · 69 阅读 · 0 评论 -
C++ Deque(双向队列) 队列queue 栈stack
一、为什么使用双向队列它允许较为快速地随机访问向deque 两端添加或删除元素的开销很小是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque 两端添加或删除元素的开销很小。它不需要重新分配空间,所以向末端增加元素比vector 更有效。实际上,deque 是对vector 和list 优缺点的结合,它是处于两者之间的一种原创 2021-12-03 11:19:21 · 231 阅读 · 0 评论 -
unordered_map用法
emplace函数-----原位构造元素unordered_map<key,value>map;map.emplace(key, element)下面为例子:(包含一个知识点first和second的用法)2、查找map.find(key) != map.end() 存在keymap.count(key) !=0 存在keymap[key] = value 存在map[key] =0 (value为int时,不存在key输出为0)...原创 2021-12-02 15:07:44 · 770 阅读 · 0 评论