![](https://img-blog.csdnimg.cn/5de04f2e38354c1d9fe5374a0c8f33d4.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode
文章平均质量分 87
个人刷题记录,主要为c和c++。
zxm_
这个作者很懒,什么都没留下…
展开
-
leetcode_刷题总结(c++)_双指针_左右指针
主要参考:(一)从两端向中心靠近又称首尾指针(二)从中心向两端扩散中心扩散法647. 回文子串dp做法:请移步我动态规划的博客31. 下一个排列思路:参考官方题解注意到下一个排列总是比当前排列要大,除非该排列已经是最大的排列。我们希望找到一种方法,能够找到一个大于当前序列的新序列,且变大的幅度尽可能小。(1)将后面大的数和前面小的数交换(这样可以保证 从后往前,升序对)(2)希望下一个排序增加的幅度尽可能小42.接雨水42.接雨水(二)从中心向两端扩散5. 最长回文子串5.原创 2022-07-09 13:38:06 · 372 阅读 · 0 评论 -
leetcode_刷题总结(c++)_快慢指针_滑动窗口
主要参考:【缓缓】使用「滑动窗口」即可简单求解 另附【算法框架】与【拓展题目】滑动窗口什么是滑动窗口:对一个序列(本题是一个字符串s)使用双指针left、right,初始化left = right = 0,把索引左闭右开的区间[left,right)称为一个窗口(此处不适用双闭或双开是为了避免边界问题,左闭右开初始时区间[0,0)没有元素,让right向右移动一位区间[0,1)就包含元素0了)。滑动窗口的心法(核心思想)初始化双指针left和right。【初始化】先不断增加right扩大窗口,直原创 2022-07-06 20:24:48 · 328 阅读 · 0 评论 -
leetcode_刷题总结(c++)_分治算法(减治算法)_快速排序
主要参考:第 6 节 三路快排分而治之条件:(1)原问题可以分解成若干个规模比较小的相同子问题。(2)子问题相互独立。(3)子问题的解可以合并为原问题的解。写法一:写法二:三划分快排详细可看视频:第 6 节 三路快排75. 颜色分类快排:......原创 2022-06-14 22:44:07 · 1288 阅读 · 0 评论 -
leetcode_刷题总结(c++)_分治算法_二分法
主要参考:代码随想录写对二分查找不是套模板并往里面填空,需要仔细分析题意分而治之条件:(1)原问题可以分解成若干个规模比较小的相同子问题。(2)子问题相互独立。(3)子问题的解可以合并为原问题的解。(1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;(2) 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题(3)合并:将各个子问题的解合并为原问题的解。二分搜索是分治的一个实例,只不过二分搜索有着自己的特殊性:(1)序列有序(必须满足单调性)(2)结原创 2022-06-14 13:51:50 · 1451 阅读 · 0 评论 -
leetcode_刷题总结(c++)_动态规划
主要参考:动态规划是一种分治思想分治(将原问题分解为若干子问题,自顶向下求解各问题,合并子问题的解,从而得到原问题的解)动态规划(将原问题分解为若干子问题,自底向上,先求解最小的子问题,然后把结果存储在表格中,在求解大问题的子问题时,直接查询之前的表格,避免重复计算,空间换时间)(1)最优子结构问题在最优解包含子问题的最优解。(2)子问题重叠有大量子问题是重叠的。(1)状态确定维度,确定下标代表的值(2)状态转移公式(递归公式)(3)确定初始化条件(4)从记忆化搜索的角度入手要么已知,要么原创 2022-06-13 19:58:19 · 176 阅读 · 0 评论 -
leetcode_刷题总结(c++)_先后指针/前后指针
主要参考:文章目录先后指针leetcode部分题目19. 删除链表的倒数第 N 个结点160. 相交链表206. 反转链表先后指针leetcode部分题目链表19. 删除链表的倒数第 N 个结点160. 相交链表206. 反转链表数组.........原创 2022-05-31 14:43:54 · 450 阅读 · 0 评论 -
leetcode_刷题总结(c++)_链表(递归求解)
主要参考:文章目录递归思想函数模板leetcode部分题目递归思想递归的思路:重复利用函数本身能实现的功能,按照顺序进行不断地自调用核心: 建立递归函数函数主要包含:1.边界判断2.实现需要完成的功能3.对下一跳/项继续进行函数自身的调用函数模板在这里插入代码片leetcode部分题目.........原创 2022-05-31 14:43:35 · 258 阅读 · 0 评论 -
leetcode_刷题总结(c++)_二叉树(递归求解)
主要参考:文章目录leetcode部分题目递归思想函数模板leetcode部分题目递归思想递归的思路:重复利用函数本身能实现的功能,按照顺序进行不断地自调用核心: 建立递归函数函数主要包含:1.边界判断2.实现需要完成的功能3.对下一跳/项继续进行函数自身的调用函数模板递归函数function(当前节点){ 终止条件判断(遍历到尽头直接 return) 节点记录 对左节点调用function 对右节点调用function}主函数( ){ 对根节点调用函数functio原创 2022-05-29 13:23:33 · 246 阅读 · 0 评论 -
leetcode_刷题总结(c++)_前缀和
主要参考:一套模板解决四个《前缀和+哈希表》问题动画模拟】秒杀七道题文章目录前缀和leetcode部分题目[560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/)首先明确:子序列:可以连续,也可以不连续子数组(子字符串):必须是连续的前缀和前缀和思想和滑动窗口会经常用在求子数组和子串问题上前缀和。前缀和其实和求解数列的和十分相似Sn = a1+a2+a3+…an; 此时Sn就是数列的前 n 项和。例 S原创 2022-05-23 17:02:49 · 481 阅读 · 1 评论 -
leetcode_刷题总结(c++)_快慢指针_环形链表
主要参考:文章目录快慢指针算法思想问题1、为什么fast和slow一定会相遇?问题2、fast和slow相遇时,slow指针是否绕环超过一圈?问题3、为什么ptr和slow相遇的节点一定是入环点?问题4、为什么fast指针每次移动2步,能不能移动3、4、5...步?快慢指针解题模板leetcode部分相关题目[141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/)[142. 环形链表 II](https://leetcode.cn/probl原创 2022-05-17 12:40:49 · 339 阅读 · 0 评论 -
leetcode_刷题总结(c++)_动态规划_背包类问题
01背包目标和:转化问题以后为0-1背包方案数问题。分割等和子集:转化后为0-1背包可行性问题。最后一块石头的重量 II:转化后为0-1背包最小值问题。完全背包零钱兑换:完全背包最小值完全平方数:完全背包最小值零钱兑换 II:完全背包方案数组合总和 Ⅳ:考虑物品顺序的完全背包方案数。每个物品可以重复拿,有几种装满背包的方案?多维背包01 字符构成最多的字符串:多维费用的 0-1 背包最大值,两个背包大小:0和1的数量盈利计划:多维费用的 0-1 背包最大值分组背包掷骰子的N种方法:原创 2022-05-15 19:01:15 · 573 阅读 · 0 评论 -
leetcode_刷题总结(c++)_记忆化搜索
目标和494. 目标和未使用到记忆化数组class Solution {public: int ans; void dfs(int index,int count,vector<int>& nums,int target){ if(index==nums.size() && count==target){ ans++; return; } if(in原创 2022-05-11 21:10:03 · 285 阅读 · 0 评论 -
leetcode_刷题总结(c++)_回溯法
主要参考博客:DFS–基本入门模板 和 例题 (绝对入门) (最全)大部分回溯法的题目都能通过DFS的模板写出来。主要分为两类:写过这些入门题后,我们可以将DFS题分为两大类:1 . 地图型:这种题型将地图输入,要求完成一定的任务。因为地图的存在。使得题意清楚形象化,容易理清搜索思路。2 . 数据型:这种题型没有给定地图,一般是一串数字或字母,要求按照一定的任务解题。相对于地图型,这种题型较为抽象,需要在数据中进行搜索。数据以数组的形式存储,那么只要将数组也当作一张图来进行搜索就可以了。需要注原创 2022-05-06 22:19:10 · 324 阅读 · 1 评论