分类: 算法

28 篇文章

笔试题记:24美团春招技术岗第一批笔试
1.小美的平衡矩阵 一开始暴力搜索,超时了 因此必须优化,时间主要浪费在了“计数一个范围内的0和1的个数” 所以用一个二维前缀和,psum[row][col] 表示 grid[row][0:col] 中1的个数,也就是预计算 这样在执行“计数一个范围内的0和1的个数”,只需要遍历每一行的前缀和,从二维降到了一维 #include <bits/…
LeetCode hot100@动态规划&多维动态规划
More content:力扣题记之动态规划 70. 爬楼梯✅ dp数组下标代表当前在第几阶,数组value表示到这一阶的方法数(即爬到第i层楼梯,有dp[i]种方法) 遍历顺序从前往后 但是一开始没想明白为什么状态转移公式是dp[i] = dp[i-1] + dp[i-2] 只是找规律推出来的 class Solution {public: in…
力扣题记之回溯
More content:LeetCode hot100@回溯 回溯算法可解决的问题类型: 组合问题:N个数里面按一定规则找出k个数的集合 17. 电话号码的字母组合 39. 组合总和 40. 组合总和 II 216. 组合总和 III 77. 组合 切割问题:一个字符串按一定规则有几种切割方式 93. 复原 IP 地址 131. 分割回文串 子集…
LeetCode hot100@回溯
More content:力扣题记之回溯 回溯是递归的副产物,只要有递归就会有回溯 回溯算法模板:回溯递归是往深处找,内部for遍历是横向找 void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtrack…
LeetCode hot100@堆
优先队列: 大根堆:priority_queue<int> maxHeap; 小根堆:priority_queue<int, vector<int>, greater<int>> minHeap; 自定义比较器: struct Comparator { bool operator()(ListNode *a,ListNode…
力扣题记之栈
More content:LeetCode hot100@栈 96. 下一个更大元素 I✅ 单调栈 + 哈希 class Solution { public: vector<int> dailyTemperatures(vector<int>& temperatures) { stack<int> sk;…
LeetCode hot100@栈
More content:力扣题记之栈 栈:stack<int> sk; 队列: queue<TreeNode*> q; 单端队列 deque<char> dq; 双端队列(更底层) 20. 有效的括号✅ 刷包浆的题 class Solution { public: bool isValid(string s) …
力扣题记之二叉树
More content:LeetCode hot100@二叉树 257. 二叉树的所有路径❌ 递归回溯 递归三步走,但要注意在二叉树的递归中单层逻辑一般要包括中左右三部分(顺序依前中后遍历而定) class Solution { public: void traversal(TreeNode *cur, vector<string> …
LeetCode hot100@二叉树
More content:力扣题记之二叉树 链式存储的二叉树节点定义方式: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 二叉树递归求深度用前序,求高度用后序 C+…
LeetCode hot100@链表
单链表定义方式: struct ListNode { int val; // 节点上存储的元素 ListNode *next; // 指向下一个节点的指针 ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数 }; STL链表:list<int> mylist; 是一个双向循环链表,不需要关心节…