
LeetCode
文章平均质量分 66
零子若
这个作者很懒,什么都没留下…
展开
-
个人力扣题目分类记录
双指针838. 推多米诺原创 2022-02-21 12:53:19 · 1405 阅读 · 0 评论 -
LeetCode背包题个人总结
01背包 2d要求n 个物品每个weight[i] 重量不一样,对应价值value[i],w 容量的背包。求背包能背下的最大价值。(物品不可重复)分析vector<vector< int >> dp;dp[i] [j] :从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。两个角度两个递推式(1)不放物品 dp[i][j] = dp[i - 1][j](2)放物品 dp[i][j] = dp[i - 1][j - weight[i]] + val原创 2022-02-10 17:05:29 · 898 阅读 · 0 评论 -
LeetCode状态压缩题个人总结
题单78 . 子集1178. 猜字谜1601. 最多可达成的换楼请求数目2151 . 基于陈述统计最多好人数一些心得:(1)找到某个公共状态进行遍历,一般对于每个子状态只有0 或 1 两种状态,即要么存在要么不存在。遍历的总数就是 (1 << n);for(int state = 0;state < (1 << n);state++)(2)对于任意一个state ,需要遍历state每一位的状态时0还是1,如果是1,代表需要对该数据处理。所以需要一个循环遍历原创 2022-01-24 19:32:27 · 5789 阅读 · 0 评论 -
第 16 章 更加复杂的数据结构
684. 冗余连接并查集板子题,来分析一下并查集吧。这题关键是把一个无向有环图转换成一棵树,变成无向无环图。使用并查集进行连接找爹,如果爹不一样就进行连接,最后第一个一样的就是罪魁祸首。1、初始化Parent最初每个节点父节点都是自己,Parent数组初始化。2、进行判断连接如果两点有边,判断是否为同父,不同进行连接合并。相同则返回该Union(a,b,parent);这个函数的实现如下 void Union(int a,int b,vector<int>& pa原创 2021-12-12 11:33:26 · 244 阅读 · 0 评论 -
第 15 章 指针三剑客之三:图
785. 判断二分图思路是填色。对于每个点,先将其填色1,放入队列。广搜的方式遍历对应的边的点,填上与之相反的颜色。如果有相同则false。反之为true;882. 细分图中的可到达结点在B站看了视频觉得就很清晰了。Dijkstra 算法.思路是,求0到可以到每个点。但是可以先求0 到 n - 1节点的最短距离,在算maxMove除了到这个点还剩下多少步,就直接加进去。当然会有个重复的情况。比如0 ~ 1 距离5 ,假设0到1可走4,1到0可走3,结果应该去最小 min(5, 3 + 4);PII原创 2021-12-02 13:03:34 · 190 阅读 · 0 评论 -
第 14 章 指针三剑客之二:树
104. 二叉树的最大深度太垃圾了,这题没写出来。110. 平衡二叉树写树题目感觉总是缺根弦。利用一个辅助函数返回深度是否平衡int helper(TreeNode* root)在这个函数中,首先判空,root不存在直接返回-1那么根节点的左右子树的深度可以直接递归的表示int l = helper(root->left); int r = helper(root->right);如果l ,r 为 -1 或者深度差大于1 也直接返回-1if(l == -1 || r == -原创 2021-11-04 14:58:53 · 133 阅读 · 0 评论 -
第 12 章 令人头大的字符串
242. 有效的字母异位词哈希或者排序,很简单205. 同构字符串貌似是二刷?两个哈希表,也很简单。647. 回文子串循环每个字符以该字符为中心像两边找。找回文需要分奇偶。奇数个中心则是l = r = i开始找,偶数个中心l = i,r = i + 1.696. 计数二进制子串分组,将连续的1或0计数分组。每次相邻的 0 和 1 只有个数少的才能组成串。那么只有分组两两相邻的较小值才有贡献。...原创 2021-10-21 12:55:16 · 135 阅读 · 0 评论 -
第 11 章 妙用数据结构
本文仅为个人刷题记录448. 找到所有数组中消失的数字这题关键是记录一个复杂度o(n)的方法,即在原数组上修改。对于Nums中每个数据,不仅有数据的值,还有位置。那就遍历出现过的每个数据,并把数据对应成位置进行更改。对应位置的数据取负值。这里对于每个数据,先找到pos = abs(num) - 1;在进行该位置数据判断,是否已经出现,没有出现为正值的话,则改为负值。最后遍历数组,如果该数据为正值,对应位置的数据就是没有出现的。...原创 2021-09-15 11:07:13 · 321 阅读 · 0 评论 -
第 10 章 神奇的位运算
461. 汉明距离俩写法。位运算。先异或,不同的就为1 。在循环与 &1,看有多少不同。每次右移直到数据用完。class Solution {public: int hammingDistance(int x, int y) { int diff = x ^ y; int ans = 0; while(diff) { ans += diff & 1; di原创 2021-09-05 21:17:26 · 109 阅读 · 0 评论 -
第 13 章 指针三剑客之一:链表
个人笔记记录:LeetCode默认链表表达:struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(nullptr) {}};206. 反转链表非递归:肯定是前节点,后节点,但不太会声明ListNode* prev = nullptr; //直接声明成空ListNode* next;循环时保证head一直能遍历就循环while(head)最后返回prev值,head遍历到最后原创 2021-08-12 11:40:27 · 118 阅读 · 0 评论 -
第 7 章 深入浅出动态规划
70. 爬楼梯简单题 dp[i] = dp[i - 1] + dp[i - 2] 但是注意越界问题,这个公式只适用于n >= 3不需要开数组的做法: int cur ,pre1 ,pre2; pre1 = pre2 = 1; for(int i = 2;i <= n;i++) { cur = pre1 + pre2; pre2 = pre1; pre1 = cur;原创 2021-07-21 09:48:21 · 296 阅读 · 0 评论 -
第 4 章 居合斩!二分查找
69. x 的平方根朴素遍历必超时。别想了。。但是二分也是不能用i*i 这种会炸的操作。所以乘法要转换成除法。对于每一个mid值,x / mid = sqrt,如果这个mid就是x开方,那么mid == sqrt。当然也有开不尽的时候,此时l = = r,返回r就好。如果mid > sqrt ,说明mid过大了,缩减r的范围mid - 1。反之增大l为mid +1。...原创 2021-06-16 20:55:10 · 143 阅读 · 0 评论 -
LeetCode 剑指offer刷题笔记
05. 替换空格Q:如何取代已有的字符串中的字符的方法?A:可以新建一个字符串array,对于满足条件的字符使用push_back()放入array,需要替换的直接将替换后的字符放入array。也可以使用array[size++]的方式放入。...原创 2021-03-25 19:59:34 · 934 阅读 · 0 评论 -
150. 逆波兰表达式求值
本文仅为个人刷题遇到问题解析记录,题目和答案均在官网!!!逆波兰表达式Q:atoi()函数和.c_str()作用是什么?为什么要这样写?A:源代码:stk.push(atoi(token.c_str()));atoi()表示 ascii to integer)是把字符串转换成整型数的一个函数函数为int atoi(const char * nptr)这可以看出,传参是char型,所以要对token使用.c_str(),C++中使用string类表示字符串,string类的c_str方法可以返回原创 2021-03-21 20:26:36 · 153 阅读 · 0 评论 -
Leetcode 206.反转链表I
Leetcode 206.反转链表I 和92.反转链表II本文仅为个人刷题遇到问题解析记录,题目和答案均在官网!!!反转链表I反转链表I:迭代法:Q1:反转链表的循环四语句具体作用是什么?A1:while(curr != nullptr) { ListNode* next = curr->next;//这句话是记录当前节点的下一个节点。 curr->next = prev;//当前节点反转,即下一个节点变成自己之前的节原创 2021-03-21 19:27:21 · 67 阅读 · 0 评论 -
Leetcode 115.不同的子序列
Leetcode 115.不同的子序列题目连接题目:给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。在这里插入代码片输入:s = "rabbbit", t = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 s 中得到 "r原创 2021-03-17 21:24:51 · 233 阅读 · 0 评论