- 博客(16)
- 收藏
- 关注
原创 代码随想录第三十二天 122.买卖股票的最佳时机 II 55. 跳跃游戏 45.跳跃游戏 II
我们的最终结果一定是几组买入卖出对应的价格之和,那么我们能不能基础再拆分一下呢,实际上是可以的,把利润按照天来分解,顿时会清晰很多,即第1天买,第3天卖可以写成p[3]-p[2]+p[2]-p[1];这样可以变成第2天的利润和第三天的利润之和。
2024-05-14 19:52:22
417
2
原创 代码随想录第三十一天 455.分发饼干 376. 摆动序列 53. 最大子序和
贪心是从局部到最优类似分发饼干这种题目会进行一对一的匹配的贪心算法题,可能会用到双指针思想。类似摆动数列这种题对于特殊情况的处理要十分注意。
2024-05-14 18:59:46
472
1
原创 代码随想录第十六天 104 二叉树的最大深度 111二叉树最小深度 207 完全二叉树的节点个数
四 总结1. 树的很多题都需要递归操作,一定要掌握好递归的逻辑。
2024-04-19 19:17:01
611
原创 代码随想录第十五天 102 二叉树的层序遍历 226 反转二叉树 101对称二叉树
反转二叉树和对称二叉树都要注意递归过程的实现,每一层的逻辑。
2024-04-17 20:12:07
581
1
原创 代码随想录第十四天 144 二叉树的前序遍历 94 二叉树的中序遍历 145 二叉树的后序遍历 二叉树的统一迭代
二叉树递归需要注意三点:返回值和参数、终止条件、单层递归的处理逻辑先序遍历的迭代法由于访问顺序和遍历输出的顺序相同,所以简单;中序由于两个顺序不同,因此需要指针进行遍历输出,栈用于存储访问过的节点。而统一迭代法采用空节点进行标记,处理逻辑类似,只是相差代码的顺序。
2024-04-17 17:48:17
615
1
原创 代码随想录第十三天 239 滑动窗口最大值 347 前k个高频元素
两道题分别使用了单调队列和优先级队列,要对两种队列的应用场景熟悉。对于优先级队列所使用的priority_queue的底层原理和使用方法还有待进一步熟悉。
2024-04-15 20:26:43
555
1
原创 代码随想录第十一天 20 有效的括号 1047 删除字符串中的所有相邻重复项 150 逆波兰表达式求值
栈最适合做匹配、递归等问题。将大问题分解为小问题,从整体到部分等具有完全包含关系的问题,大概率会用到栈。注意:再在 实际企业项目开发中,尽量不要使用递归!在项目比较大的时候,由于参数多,全局变量等等,使用递归很容易判断不充分return的条件,非常容易无限递归(或者递归层级过深),造成栈溢出错误(这种问题还不好排查!
2024-04-14 19:40:58
637
1
原创 代码随想录第十天 232 用栈实现队列 225 用队列实现栈
用栈实现队列需要两个栈,输入栈和输出栈;用队列实现栈可以用一个或者两个队列在SGI STL中栈和队列一样是以deque为缺省情况下的底部结构,栈和队列并不算是容器,而是被划分为container adapter( 容器适配器)
2024-04-12 20:42:54
874
原创 代码随想录第九天 实现strStr() 字符串总结 双指针总结
C语言中,把一个字符串存入一个数组时,需要把结束符 ‘\0’存入数组,以此作为该字符串是否结束的标志。C++中,提供一个string类,string类会提供 size接口,可以用来判断string类字符串是否结束,就不用’\0’来判断是否结束。vector< char > 和 string在基本操作上没有区别,但是 string提供更多的字符串处理的相关接口,例如string 重载了+,而vector却没有。因此一般还是定义string。
2024-04-12 17:23:15
855
原创 代码随想录第八天 344 反转字符串 541 反转字符串II 替换数字 151 反转字符串中的单词 右旋字符串
C++中对于字符串长度调整可采用resize()函数。erase的时间复杂度是o(n)级别的,不要图方便滥用。C++中,string类会提供 size接口,可以用来判断string类字符串是否结束,而用数组存储的字符串需要用’\0’来判断是否结束。vector< char > 和 string在基本操作上没有区别,但是 string提供更多的字符串处理的相关接口,例如string 重载了+,而vector却没有。因此处理字符串时最好还是定义string类型。
2024-04-11 17:57:52
691
1
原创 代码随想录第七天 454四数相加II 383赎金信 15 三数之和 18 四数之和
三数之和、四数之和的去重非常类似于回溯算法中的树层去重,要对原理了解透彻先搭建好算法的框架,再进行剪枝优化三数之和、四数之和也是双指针的典型应用,可以将暴力解中要用两重循环解决的事情变成一重循环来解决。
2024-04-10 20:07:34
669
1
原创 代码随想录第五天 242 有效的字母异位词 349 两个数组的交集 202 快乐数 1 两数之和
要分清数组、集合(set)、映射(map)的选择时机在c++11里,for循环中可以自动迭代,从而实现了对于vector数组内容的打印对于map.find或者map.start的返回值应该使用auto 自动类型推导pair键值对中第一个元素是 it->first,第二个则为it->second。
2024-04-07 21:58:08
720
原创 代码随想录第四天 204两两交换 19删除链表的倒数第N个结点面试题 02.07 链表相交 142环形链表 II
链表中双指针,快慢指针的运用非常常见,要把握好。链表中对于空指针的访问异常是非常典型的问题,要注意到。
2024-04-07 20:05:46
845
原创 代码随想录第三天 203移除链表元素 707设计链表 206反转链表
在链表中设置一个虚拟头结点dummyhead可以有效避免头结点需要特殊处理的情况。
2024-04-06 19:47:27
701
原创 代码随想录第二天 977有序数组的平方 209 长度最小的子数组 59螺旋矩阵
python中/是除法,//是整除向下取整python中列表初始化可以通过ans = [0]*len(nums)申请固定位数的列表python中inf表正无穷python中关于长度的变量名不能起为len,因为有len()函数。
2024-04-04 21:38:08
786
原创 代码随想录第一天:704二分查找、27删除元素
1.对比C++、java、python中求数组长度的方法:1.c++中vector容器求数组长度用size()方法,因为容器的本质是模板类,size()属于成员函数。2.python中求数组长度用len()函数3.java中求普通数组长度用length属性,求String字符串长度用 String 类的length()成员函数。2.python中没有++,--这种自增自减运算符。
2024-04-03 21:05:41
1142
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人