- 博客(24)
- 收藏
- 关注
原创 每日一题15-使用最小花费爬楼梯
我觉得这个题最大的难点在于理解题意,从下标为0或者为1的地方向上爬。如果从当前的楼梯爬上去了才需要耗费这个台阶的体力值。到达第i阶楼梯可以从第i-1阶向上爬,也可以从第i-2阶向上爬,
2025-06-23 23:16:51
154
原创 每日一题14-打家劫舍
像这种求最优解的题,有一个最简单的方法就是选或者不选。比如说nums = [2,7,9,3,1],比如我选择nums[3]= 1,那么接下来我只能选opt[3],如果我不选nums[4],那么我只能选opt[4],然后在这两个里面取最大值。可以抽象一个递推公式dp[i] = std::max(dp[i-1],dp[i-2] + nums[i])题目描述:简单来讲就是,给定数组arr = [1,2,4,5,7,9] 代表的是抢到的钱,且必须间隔一个抢。
2025-06-16 23:45:23
247
原创 每日一题13-回文子串数量
使用双指针的核心的思路就是依次遍历字符串 ,然后向两边扩散,需要注意的是,这里要考虑的是除了遍历字符串本身外,还要考虑字符串的间隙,即字符串的中心,比如aba,是需要考虑ab ba 之间的间隙的, 可以理解为a_b_a,那么对于n个字符的字符串,它的中心有多少个呢?比如区间[i,j] 的字符串,如果对于区间[i+1,j-1]的字符串是回文字符串,且s[i]== s[j],那么区间[i,j]的字符串也一定是回文字符串。dp[i][j] :表示[i,j]区间的字符串是否是回文串。先全部初始化为false。
2025-06-15 10:59:17
303
原创 每日一题12-不同路径
这个题乍一看感觉像是图论的题目,但是仔细思考会发现,对于每一个ij 的位置,一定是由(i-1,j)的位置和(i,j-1)的位置过来的,而到达(i-1,j)的位置,一定是从(i-2,j),(i-1,j-1)的位置过来的,以此类推,这本质上就是。,而求解重叠子问题,最佳方法就是采用动态规划。
2025-06-13 09:52:33
151
原创 每日一题8 区间和、前缀和
输入区间[2,4],那就是3+4+5 求和,我们可以在每次输入的时候把前n个数的和先求出来就可以。对于求子序列、自区间等问题可以用一个小技巧,就是前缀和的思路,比如数组为[1,2,3,4,5]这个题目就是根据输入区间的值,然后求和输出。
2025-05-24 00:14:33
164
原创 每日一题7-长度最小的子数组
这个题相当于是找一个“连续子数组” ,保证它的和最小,这题是经典的滑动窗口题型,当然也可以暴力两个for循环。使用两重for循环 简单明了,但是复杂度是o(n2);下面介绍一种o(n)的算法。
2025-05-22 22:06:35
215
原创 每日一题6 有序数组的平方
这个题如果是让我做的话,我可能直接平方完成后调用std::sort() 复杂度o(nlogn),但是这是力扣算法题啊,如果能直接用api没有意义。分析下:这个最大值一定是最左边或者最右边,然后在这种情况下我们搞两个指针(索引)分别指向数组两端,依次平方后做比较呗,思路也比较简单。
2025-05-20 23:51:12
258
原创 每日一题5-移除数组元素
使用双指针,可以将原问题规模由o(n2)缩减至o(n);搞一个fast指针,这里所谓的指针就是一个下标而已,用来扫描整个数组,如果不是target值就记录下来,如果是的话就扫码下一个,不记录这个值,大致思路就是这样。
2025-05-19 23:50:55
144
原创 每日一题4:卡车上的最大单元数
然后,根据卡车的总数量truckSize来尽可能多的装载。这里面有一个难点就是当前可以装载的数量的确定: int nTake = std::min(nNum,truckSize);然后truckSize的数量就依次减少,知道truckSize的数量小于等于0;这个题目咋一看觉得挺难,实际上挺简单的。根据这个例子的模拟我们就很清楚的知道,这个题目的思路:先根据 boxTypes里的子元素,按照第二个元素(单元数)排序,也就是。
2025-04-04 21:55:37
211
原创 每日一题1:树上最长单色路径
核心思路:采用递归的方式 ,求得左子树的最大值和右子树的最大值,并且当前节点的val 值与左子树的值相同,那么最大路径长度就是左子树的最大值加右子树最大值的最大值加1;递归出口:if(当前节点 ==NULL) return 0;
2025-03-31 22:48:33
251
原创 阅读有感:毕业后的5年你干了些什么?
毕业后的5年是人生的黄金期,决定整个人生的未来走向,加油!沉淀自己,铸就辉煌的未来!对于毕业5年的人来讲,一定要认清即将面临的五大挑战。
2025-03-03 21:58:53
175
原创 文件名在CFileDialog中被截断,文件名显示不全
我遇到这个问题的时候,在网上找了各种答案,也没找到,最后通过自己的各种尝试,解决了问题,看起来文件名是截断了,其实没有截断,只是显示不全,鼠标点击编辑框的时候可以正常显示出来。最后一个参数 是否开启vista 风格,改成false就可以了。
2023-05-11 11:56:42
325
1
原创 char * a [ ] 与char a [ ] 的区别
首先,我们要知道char a [ ] 代表一段连续的地址,表示存储字符型的数据,如char a [10]表示存放10个字符的数组,char *s 代表的是字符数组指针其中s 表示的是字符串hello 的首地址,而不是字符串本身,这个概念一定要清楚。接着我们说char * a [ ] ,这是char a [ ] 和char *s 的结合体,比如:如何理解这句话呢?char * a [ ] 中 [ ] 的优先级大于* ,所以我们先看a[ ],也就是说数组a 中保存的数据类型为char * ...
2022-06-21 18:57:55
1789
原创 C++快速实现冒泡排序总结归纳
冒泡排序的意思总结来讲就是逐个比较数据,将大的“泡(数)”排出来,这也是冒泡排序的由来。如图所示,要比较以上序列数据的大小,首先要进行第一轮排序,找到最大的数,将其放在最以后一位,因此7个数的排序就需要比较6次,由此,对于N个数的排序就需要比较N-1次,定义变量 i 控制每一轮的比较次数,即 i 的取值范围为0~N-1-j。对于上述需要重复操作6次,才能将所有的数进行完整排序,即6趟;考虑使用外循环控制变量j来控制,j的取值范围为0~N-1。代码实现#include <iostr
2021-07-02 20:16:08
205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅