![](https://img-blog.csdnimg.cn/2332b9dcd23d411aa81647d6bdbcb018.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leedcode
文章平均质量分 84
哪里跌倒就在哪里趴下,然后再站起来!记录一些自己刷题过程中的心得和总结。
皇皇零岁
人类的悲喜并不相通
展开
-
探讨【查找】的经典题目(很重视细节)
查找 二分查找看似简单,思路也很清晰,但是在实际编程很容易因为各种边界问题而出问题,尤其是当区间中最后只剩下一两个数时,非常容易陷入死循环。经常结合递归来解题。 练手题:69(数学解法) 34 540 4 34:在排序数组中查找元素的第一个和最后一个位置 相当于实现C++ 里的 lower_bound 和 upper_bound 函数。我们先对半分,然后根据中间元素向两边进行扩展(或单边)。要非常注意死循环问题和没找到的情况。 class Solution { public: int lo原创 2022-04-24 22:36:51 · 130 阅读 · 0 评论 -
详细总结【贪心】算法解题技巧和规律
贪心 顾名思义,贪心就是让每次操作都满足局部最优性质,从而使最终得到的结果全局最优(《算法导论》中有相关证明,但是这里我们不care)贪心的难点在于,如何提取出正确的子问题。 贪心算法经常涉及到排序和选择,因为我们总是试图寻找能符合当前条件的最小消耗,如最少区间个数,最少饼干等等。或者说,我们总是针对单个样本或一些样本寻找它们符合条件的情况,最后将所有样本划分进行组合,但是还有一种贪心经常容易被忽略:将目标条件进行拆分,每次只针对一个子目标进行处理,分别处理n次,其中n是子问题的个数,最常见的就是两次遍历。原创 2022-04-14 21:32:01 · 1319 阅读 · 0 评论 -
深入解读并总结【排序】的解题技巧和注意事项
排序 重要性……不用我说了。我们需要能够自己熟练地实现所有的基本算法(手写程度),尤其注意排序过程中是否取等的问题,while循环退出条件等细节。 综合的测评题:915 对了,我们先来观摩一下STL容器中的std::sort()的底层是怎么实现的吧。 原理篇 首先,关系型容器(底层为RB-tree)拥有自动排序功能,不需要调用sort,序列型容器中的stack,queue等有特定出入口,不允许排序,因此一般sort()针对的是vector和deque(list是双向迭代器,sort要求随机迭代器,因此原创 2022-04-14 14:14:51 · 404 阅读 · 0 评论 -
关于【链表】的解题规律
链表 作为一个基本到不行的数据结构,链表可以说基本上都是担当着服务的角色。但是链表本身也有非常多有趣的性质和算法的。单向链表的一大特点是无法知道长度和上一个结点,只能知道当前结点和下一个结点,所以我们经常利用快慢指针的方法来在线性时间内获取特定位置的元素。 另外在做题过程中,为了避免单独给头节点初始化,或删除结点时分类讨论,常常单独new一个头结点。 对了,顺便说一下,删除结点时最好释放一下内存,malloc和free配套,new和delete配套。free和delete都只把指针所指向的内存释放掉,并没有原创 2022-04-11 13:33:26 · 949 阅读 · 0 评论 -
探讨【字符串】的题型和解法
字符串 遇到的问题无非就这么几类:字符串翻转/公共子序列/回文子串/重复子串。 首先我们发现,字符串经常和动态规划挂钩!还有一些独特的算法,如中轴法,滑动窗口(分固定和不固定)。此外,我们还要关注一些经典问题:KMP算法,马拉车算法,表达式求解等。 字符串问题经常用到unordered_map和unordered_set两种stl容器。 练手题:1143(dp出现过,高频) 225 696(题解很有趣)3(滑动窗口问题) 下面进行具体讲解 1143:求给定字符串的最长公共子序列 这是一个非常明显的动态规原创 2022-04-11 13:32:22 · 676 阅读 · 0 评论 -
探讨【分治】的解题技巧
分治 分治问题和动态规划非常类似,通过把原问题分为子问题,再将子问题进行处理合并,从而实现对原问题的求解。其时间复杂度一般用主定理进行求解。另外,自上而下的分治可以和备忘录结合,避免重复遍历相同的子问题,也可以换用自下而上的动态规划方法求解。注意,分治经常利用到递归。 练习题:241(非常经典) 932(说实话我觉得思路挺难想的) 312(Hard,真的挺难想) 下面来具体看看每道题的解法: 241:给定一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所原创 2022-04-11 13:29:49 · 559 阅读 · 0 评论 -
详细总结【动态规划】的解题规律
首先,我们需要确定适用动态规划这种算法的题目特征,毕竟笔试题不会好心地在旁边标上动态规划的标签。 维基百科:动态规划在查找有很多重叠子问题的情况的最优解时有效……只能应用于有最优子结构的问题。听起来非常云里雾里(专业总结都是这么抽象)。我们先来理解一下最优子结构。最优子结构是局部最优解能决定全局最优解。也就是说,动态规划其实和分治方法非常类似,都是通过组合子问题的解来求解原问题,但是分治方法划分的子问题互不相交,而动态规划的子问题则互相重叠。为了减少复杂度,保证每个子问题只求解一次,我们原创 2022-04-05 13:19:35 · 180 阅读 · 0 评论