自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

原创 代码随想录训练营第29天|控制变量

cur用来累计新的起点下,所有油站的净利, 如果累计到i【首次】出现负值,则符合要求的起点一定在i后面。反证法:假设i之前存在一个符合题意的起点j(old_start

2024-09-11 13:45:08 467

原创 代码随想录训练营第28天|利润分解

第1步处理后,i指向原始数组(排序后)的第一个非负数,在原始数组中已然最小,但考虑到操作1同时会生成新的正数,甚至小于nums[i],所以nums[i-1]也要加入候选,修改较小的元素。在可达范围内(max_range)步进,每次移动后尝试更新max_range,直到所有元素被处理完,此时如果max_range仍未覆盖终点,说明终点不可达,返回false。1.先对nums排序,对于负数,排在越前的,绝对值越大,越要优先反号,带来的收益最大。dp[i]表示跳跃至下标为i的位置所需的最小步数。

2024-09-10 10:58:30 247

原创 代码随想录训练营第27天|二维dp

从最大的饼干出发,分配给最大胃口的孩子是最贪心的策略,累加分配个数,直至孩子/饼干被处理完。

2024-09-09 17:28:35 547

原创 代码随想录训练营第25天|set去重

nums不能排序,所以无法用while在回溯后去重,只能借助set,记录当前层已经使用过的数值,通过count方法实现去重。排列需要考虑顺序,不能用startIdx递增搜索,通过标记数组used,搜索每一层未使用过的元素。本题nums可以进行排序,所以回溯后利用while过滤掉相同数值,即可实现去重。

2024-09-07 10:24:17 266

原创 代码随想录训练营第24天|回溯过程收集

ip最多4段,所以根据path.size()终止回溯,此时如果字符串被切割到末尾,则是一个有效的分割。另外,每一段最大255,所以子串长度最大为3,据此可以进行剪枝。遍历的过程收集结果即可。

2024-09-07 09:06:03 220

原创 代码随想录训练营第23天|回溯去重

因为可以重复选取,所以递归的下一个数字的搜索起点(startIdx)是i,而非i+1。回溯之后,相同数值的元素直接跳过,实现本层去重功能。

2024-09-05 11:04:43 282

原创 代码随想录训练营第22天|回溯剪枝

减枝策略:i不能太大,否则无法凑够k个元素,当前已收集元素个数:path.size(),待收集个数:k-path.size(),终点最大为(开区间): n+1,得到起点最大:n+1-(k-path.size())。剪枝策略:i不能太大,考虑两个限制:1.满足组合个数要求,如果i太大,无法凑到k个元素 2.满足求和要求,如果i太大,当前层已经突破了n,因为i是递增的(i++),所以后续的遍历都是无效的。

2024-09-04 08:57:59 194

原创 代码随想录训练营第21天|搜索树修剪前后序

题目要求累加>=root的值,结合搜索树中序(左->根->右)递增的特性,这里所以采用右->根->左的遍历方式,同时利用pre指针指向前置节点,实现前缀和的计算。解法一:修剪根节点,不能直接返回nullptr,因为子树仍可能存在符合要求的节点。考虑搜索树的特性,只需要对一个方向的子树递归即可。搜索树特性:中序遍历递增,即左

2024-09-03 12:06:05 153

原创 代码随想录训练营第20天|带返回值的递归

待查询的节点本身也需进path,解决p就是q的父节点的case。利用递归返回值,完成父子关系的绑定:下一层加入节点返回新树,本层用root->left或者root->right将其接住。

2024-09-02 11:50:53 195

原创 代码随想录训练营第18天|带返回值的回溯

利用搜索树的中序递增特性,直接统计不同节点频率,并构造输出。不使用额外的循环和空间。

2024-08-31 13:23:29 152

原创 代码随想录训练营第17天|搜索树中序递增

搜索树中序遍历一定递增,利用last保存上一个节点,判断是否满足递增要求。

2024-08-30 12:05:37 135

原创 代码随想录训练营第16天|终止条件里的回溯

终止条件中避免对temp的操作,影响回溯,所以额外拷贝了一个ans变量。

2024-08-29 14:47:44 190

原创 代码随想录训练营第15天|终止条件里的回溯

后续遍历的思路,比较绕的一点是左叶子的判定依赖父节点,从root出发,根据root->left->left/right来判断左子树是否是左叶子。终止条件里如果对temp进行更新,会导致回溯出问题, 因此额外创建了一个变量res。

2024-08-28 08:22:22 132

原创 代码随想录训练营第14天|递归对称树

层次遍历+回文思想 ,对于空节点使用INT_MAX占位,解决歧义问题。

2024-08-27 11:06:19 173

原创 代码随想录训练营第13天|中序遍历指针迭代

使用cur指针访问到树最左(【处理左】),用stack记录过程节点,当cur为空时,回溯上一节点,收集结果(【处理根】),再将cur指向右孩子(【处理右】),实现中序遍历。

2024-08-26 11:07:57 196

原创 代码随想录训练营第11天|类型推导/操作符重载

第二个while调整队尾, 数据不能太小,因为求窗口内最大值,所以凡是小于nums[i]的均无用,pop完毕后,实际就形成了单调递减队列,队首表征当前窗口最大值的索引。使用decltype自动推导cmp的类型,或者显示写出:function第一个while调整队首,数据不能太老,处理至i位,窗口起点i+1-k,比起点还小的无效;150. 逆波兰表达式求值。150. 逆波兰表达式求值。

2024-08-24 20:32:24 176

原创 代码随想录训练营第十天|string天然栈

string提供push_back和pop_back接口,天然栈。

2024-08-23 09:42:12 115

原创 代码随想录训练营第九天|KMP模式匹配

next为前缀表,next[i]记录截止到i(包括i)的字符串(pattern.substr(0,i+1))中,相同前缀后缀的最大长度。利用这个前缀表,可以让j指针高效定位,避免从头搜索。核心思想就是高效利用pattern的模式信息,提高搜索效率。必要性:假设原字符串AA,拼接后AAAA,掐头去尾后,拼接串中一定还可以找到原串。j指向前缀结尾(开区间),因为前缀一定从下标0开始,所以前缀长度=j-0=j。i指向后缀结尾(闭区间)使用双指针删除元素。

2024-08-22 10:14:59 187

原创 代码随想录训练营第八天|双指针

【代码】代码随想录训练营第八天。

2024-08-21 11:22:47 216

原创 代码随想录训练营第七天|双指针

以上两种情况均应返回false,除此之外,表明当前字符可被正常构造,所有字符构造完毕后返回true。空间换时间,利用map将O(n^4)问题降为 O(n^2)访问一个不存在的key会自动插入该key,并将其值初始化为。2.magazine中出现过x,但已被消耗完毕。四数之和=暴搜前两位+两数之和(双指针)三数之和=暴搜首位+两数之和(双指针)1.magazine中从未出现过x。回溯解法,超时了Orz ..

2024-08-20 10:25:01 175

原创 代码随想录训练营第六天|vector与set相互构造

若先更新map、再查询,可能导致nums[i]被使用两次。反之,上述代码先查询再更新,index是利用0到i-1的元素构建,所以一定不会查到nums[i],从而不会出现重复选择的问题。set->vector, vector->set,可以利用迭代器直接构造。

2024-08-19 11:17:26 165

原创 代码随想录训练营第四天|快慢指针

利用套圈法判断成环,因为快指针每次走两步,慢指针每次走一步,追击速度是1,假设当前两指针距离为m,圈长为n,追击路程就是m+n,则经过(m+n)次运动,快慢指针一定相遇。2.如下图所示,若两链表不相交,则这两个指针遍历过程不会相遇(否则说明n中有环,不符题意),直到二者同时到达了末尾(nullptr),因为n+m=m+n;上式表明,两个指针分别从头结点和相遇处出发,每次运动一步,他们必在入环处相遇:k=1表示正好相遇,k>1表示套圈相遇。正序修改结果也对,但是修改过程存在成环的现象。

2024-08-17 16:37:19 345

原创 代码随想录训练营第三天|虚拟头

引入虚拟头,所以处于index的节点,需要从头结点出发,步进index+1次才能到达,插入/删除时,需要找到它的【前置节点】进行指针操作。使用虚拟头节点,避免删除元素在头部时处理逻辑不一致的问题。

2024-08-16 09:51:18 214

原创 代码随想录训练营第二天|滑动窗口

子数组:要求连续,考虑滑动窗口解法。right指针进行扩张,left指针进行收缩,对所有满足要求的长度取最小即可。按行求和、按列求和,切分的操作就是对【行(列)和】,求前缀和。恐怖如斯的代码掌控力。

2024-08-15 15:19:24 168

原创 代码随想录训练营第一天|双指针

原数组有序,平方后以0为界,依然可以得到两个有序数组,后续操作类似于归并。无法inplace操作,否则元素被覆盖。数组问题优先考虑双指针。

2024-08-15 13:41:12 214

matlab与C++混编教程

项目需求,最近折腾了下混合编程。网上的相关教程有的太老,方法过时;有的由于matlab版本及系统的问题不适用。摸索整理此文,一是备忘,二是供大家有类似需求时参考。在VC中调用MATLAB,总结有以下几种方法:1、调用Matlab引擎;2、调用Matlab中M函数转化成的dll文件;3、调用Matlab中M函数转化成的c语言的函数。本文实现第二种方法,将m文件转为dll,供VC调用。

2016-03-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除