力扣刷题专栏
文章平均质量分 95
能吃怎么了
新手小白
展开
-
专题十:单调栈
通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。 单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数组只需要遍历一次。更直白来说,就是用一个栈来记录我们遍历过的元素,因为我们遍历数组的时候,我们不知道之前都遍历了哪些元素,以至于遍历一个元素找不到是不是之前遍历过一个更小的,所以我们需要用一个容器(这里用单调栈)来记录我们遍历过的元素。单调栈里只需要存放元素的下标i就可原创 2023-07-11 11:42:00 · 145 阅读 · 0 评论 -
专题九:动态规划
动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以。原创 2023-06-14 12:22:45 · 184 阅读 · 0 评论 -
专题八:贪心算法
贪心的本质是选择每一阶段的局部最优,从而达到全局最优。贪心算法并没有固定的套路。所以唯一的难点就是如何通过局部最优,推出整体最优。那么如何能看出局部最优是否能推出整体最优呢?有没有什么固定策略或者套路呢?也没有! 靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划。如何验证可不可以用贪心算法呢?最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧。面试中基本不会让面试者现场证明贪心的合理性,代码写出来跑过测试用例即可,或者自己能自圆其说理由就行了。刷题或者面试的时候,手动原创 2023-06-06 12:48:36 · 167 阅读 · 0 评论 -
专题七:回溯算法
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。。原创 2023-05-25 13:59:47 · 91 阅读 · 0 评论 -
专题六:二叉树
int val;原创 2023-04-27 10:44:49 · 116 阅读 · 0 评论 -
专题五:栈与队列
栈与队列原创 2023-04-20 10:29:50 · 166 阅读 · 0 评论 -
专题四:字符串
声明: 参考:代码随想录C++中的resize()函数_c++ resize函数原理_dutmathjc的博客-CSDN博客个人总结归纳,仅用于复习回顾,不做他用!如发现文章内容有误,恳请批评指出! 题型一:反转字符串思路 在反转链表中,使用了双指针的方法。那么反转字符串依然是使用双指针的方法,只不过对于字符串的反转,其实要比链表简单一些。因为字符串也是一种数组,所以元素在内存中是连续分布,这就决定了反转链表和反转字符串方式上还是有所差异的。对于字符串,我们定义两个指针(也可以说是索引下标)原创 2023-04-16 10:26:57 · 57 阅读 · 0 评论 -
专题三:哈希表
有时也被称为散列表。哈希表是根据关键码的值而直接进行访问的数据结构。。但是哈希法也是,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。原创 2023-04-07 13:13:44 · 110 阅读 · 0 评论 -
专题二:链表
/ 单链表int val;// 节点上存储的元素// 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数。原创 2023-04-04 19:08:02 · 129 阅读 · 1 评论 -
专题一:数组
1、数组是存放在连续内存空间上的相同类型数据的集合。2、数组可以通过下标索引的方式获取到下标下对应的数据。1)数组下标都是从0开始的。2)数组内存空间的地址是连续的3)数组的元素是不能删的,只能覆盖。4)使用C++,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。5)在C++中二维数组在地址空间上是连续的。原创 2023-03-18 17:02:56 · 59 阅读 · 0 评论