自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 代码随想录算法训练营第三十九天 | 62.不同路径、63. 不同路径 II、343. 整数拆分、96.不同的二叉搜索树

分析:时间复杂度:O(m * n),空间复杂度:O(m * n)。分析:时间复杂度:O(),空间复杂度:O()。),空间复杂度:O(n)。),空间复杂度:O(n)。分析:时间复杂度:O(n。分析:时间复杂度:O(n。

2024-06-15 20:01:31 602

原创 代码随想录算法训练营第三十八天 | 动态规划基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。比如背包问题:有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。dp[j]

2024-06-14 13:50:02 711

原创 代码随想录算法训练营第三十七天 | 56. 合并区间、738.单调递增的数字、968.监控二叉树、总结

分析:时间复杂度:O(nlogn),空间复杂度:O(n)。分析:时间复杂度:O(n),空间复杂度:O(n)。

2024-06-13 09:43:26 622

原创 代码随想录算法训练营第三十六天 | 860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

中,插入操作的时间复杂度是 O(k),其中 k 是插入位置的索引。在最坏情况下,插入位置可能是链表的末端,所以插入单个人的复杂度为 O(n)。因为有 n 个人需要插入,这部分的总时间复杂度是 O(n。分析:时间复杂度:O(nlogn),空间复杂度:O(1)。分析:时间复杂度:O(n),空间复杂度:O(1)。分析:时间复杂度:O(nlogn + n。的时间复杂度是O(nlogn)。),空间复杂度:O(n)。

2024-06-12 12:41:42 800

原创 代码随想录算法训练营第三十五天 | 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

分析:时间复杂度:O(nlogn),空间复杂度:O(1)。分析:时间复杂度:O(n),空间复杂度:O(1)。分析:时间复杂度:O(n),空间复杂度:O(n)。的时间复杂度是O(nlogn)。

2024-06-11 12:27:52 605

原创 代码随想录算法训练营第三十二天 | 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II

分析:时间复杂度:O(n),空间复杂度:O(1)。分析:时间复杂度:O(n),空间复杂度:O(1)。分析:时间复杂度:O(n),空间复杂度:O(1)。计算每天股票价格的差值,将正数加起来。

2024-06-08 10:09:56 700

原创 代码随想录算法训练营第三十一天 | 455.分发饼干、376. 摆动序列、53. 最大子序和

来记录累加的最大值。当累加和小于0时,如果它加上后面的数,就会让后面的数变小,所以这是就把。分析:时间复杂度:O(nlogn);空间复杂度:O(1)。分析:时间复杂度:O(n);空间复杂度:O(1)。分析:时间复杂度:O(n);空间复杂度:O(1)。时间复杂度主要由排序步骤决定,其中。归零,从下一个数重新寻找子序列。

2024-06-07 12:10:18 565

原创 代码随想录算法训练营第三十天 | 332.重新安排行程、51. N皇后、37. 解数独、回溯总结

332.重新安排行程题目链接:https://leetcode.cn/problems/reconstruct-itinerary/文档讲解:https://programmercarl.com/0332.%E9%87%8D%E6%96%B0%E5%AE%89%E6%8E%92%E8%A1%8C%E7%A8%8B.html视频讲解:https://www.bilibili.com/video/BV1cy4y167mM/思路选择合适的容器:选择Map来存储目的地信息,并且用一个Integer来

2024-06-06 12:28:49 463

原创 代码随想录算法训练营第二十九天 | 491.递增子序列、46.全排列、47.全排列 II

对于排列问题,树层上去重和树枝上去重,都是可以的,但是树层上去重效率更高。树层上对前一位去重非常彻底,效率很高,树枝上对前一位去重虽然最后可以得到答案,但是做了很多无用搜索。

2024-06-05 12:45:39 414

原创 代码随想录算法训练营第二十八天 | 93.复原IP地址、78.子集、90.子集II

因为要所有子集的集合,所以每一层的每一个结点都要记录下来。

2024-06-04 18:01:51 601

原创 代码随想录算法训练营第二十七天 | 39. 组合总和、40.组合总和II、131.分割回文串

【代码】代码随想录算法训练营第二十七天 | 39. 组合总和、40.组合总和II、131.分割回文串。

2024-06-03 19:05:38 790

原创 代码随想录算法训练营第二十五天 | 216.组合总和III、17.电话号码的字母组合

本题的深度是由digits的长度决定的,每往下一层是对不同数组对应的字母进行遍历。而宽度是数组对应的字母的长度。没有定义nums数组,直接在循环中用i的值,并且把sum作为参数放入回溯。

2024-06-01 15:32:09 749

原创 代码随想录算法训练营第二十四天 | 回溯理论基础、77. 组合

回溯算法框架模板:回溯算法的过程可以抽象成一棵n叉树。递归遍历的是n叉树的深度,for循环是遍历每一层的节点。

2024-05-31 14:17:33 514

原创 代码随想录算法训练营第二十三天 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、总结篇

涉及到二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,都是先构造中节点。求普通二叉树的属性,一般是后序,一般要通过递归函数的返回值做计算。求二叉搜索树的属性,一定是中序了,要不白瞎了有序性了。

2024-05-30 15:54:34 548

原创 代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

【代码】代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点。

2024-05-29 17:00:42 504

原创 代码随想录算法训练营第二十一天 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

【代码】代码随想录算法训练营第二十一天 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先。

2024-05-28 19:38:28 586

原创 代码随想录算法训练营第二十天 | 654.最大二叉树 、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

本题要先确定最大的值为根节点,然后左边数组是左子树,右边数组是右子树。和前序遍历(中左右)的顺序一样,所以使用前序遍历的递归法来解决。本题对遍历顺序没有要求,将root1作为最终结果,root2的值就加在root1上。

2024-05-27 15:02:01 581

原创 代码随想录算法训练营第十八天 | 513.找树左下角的值、112. 路径总和、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

之前准备面试落下好几天的任务,这两天的博客就简单写了,具体思路注释在代码里。本题也是没有对中结点的处理所以前中后序遍历都可以。

2024-05-26 20:35:59 1097

原创 代码随想录算法训练营第十七天 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

之前准备面试落下好几天的任务,这两天的博客就简单写了,具体思路注释在代码里。由于需要判断左叶子,所以判断父节点的左孩子的左右孩子是否为空。结果也是从下往上累加返回,使用后序遍历的递归。前序遍历的递归法 + 回溯。

2024-05-25 22:12:24 541

原创 代码随想录算法训练营第十六天 | 104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

和二叉树不一样的是,需要先遍历每一个孩子的下的深度,每次遍历都和最大深度相比较。

2024-05-25 17:27:00 1353

原创 代码随想录算法训练营第十五天 | 层序遍历 、226.翻转二叉树、101.对称二叉树

使用队列来辅助遍历。记录每一层的个数,然后弹出一个节点,就把他的左右孩子放进队列中。当这一层的个数为0,就开始遍历下一行。107.二叉树的层次遍历 II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117.填充每个节点的下一个右侧节点指针II这道题目说是二叉树,上面的116题目说是完整二叉树,116的代码有判断左右孩子是否为空,所以这道题代码和116是一样的。111.二叉树的最小深度

2024-05-24 15:27:33 1223 1

原创 代码随想录算法训练营第十四天 | 二叉树的递归遍历、迭代遍历、统一迭代

通过任意一条从根到叶子简单路径上颜色的约束,红黑树保证最长路径不超过最短路径的二倍,因而近似平衡(最短路径就是全黑节点,最长路径就是一个红节点一个黑节点,当从根节点到叶子节点的路径上黑色节点相同时,最长路径刚好是最短路径的两倍)。来实现,这也是队列先进先出的特点所决定的,因为需要先进先出的结构,才能一层一层的来遍历二叉树。的一种实现结构,也就说前中后序遍历的逻辑其实都是可以借助栈使用递归的方式来实现的。前面介绍的树,都没有数值的,而二叉搜索树是有数值的了,二叉搜索树是一个。145.二叉树的后序遍历。

2024-05-23 15:59:41 951 1

原创 代码随想录算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素

综合起来,整体时间复杂度为:O(n) + O(m \log m) + O(k \log m)分析:时间复杂度:O(n),空间复杂度:O(k),自己定义了最大长度为k的辅助单调队列。,可以简化为:O(n) + O(n \log n) + O(k \log n)综合起来,整体空间复杂度为:O(n) + O(n) + O(k)分析:时间复杂度:O(nlogn),空间复杂度:O(n)。个元素(每个元素是一个大小为2的数组),其空间复杂度为。在最坏情况下,时间复杂度为:O(n \log n)个元素,其空间复杂度为。

2024-05-22 17:39:06 803 1

原创 代码随想录算法训练营第十一天 | 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

分析:时间复杂度:O(n),空间复杂度:O(1),返回值不计空间复杂度。分析:时间复杂度:O(n),空间复杂度:O(n)。分析:时间复杂度:O(n),空间复杂度:O(n)。

2024-05-18 21:08:39 547

原创 代码随想录算法训练营第十天 | 232.用栈实现队列、225. 用队列实现栈

学习了Queue的定义,是用LinkedList。添加元素用offer(),弹出是poll(),peek()。也可以定义为Deque que1 = new ArrayDeque<>()。因为Deque 接口继承了 Queue 接口,所以 Queue 中的 add、poll、peek等效于 Deque 中的 addLast、pollFirst、peekFirst。

2024-05-17 22:11:21 490

原创 代码随想录算法训练营第九天 | 28. 实现 strStr()、459.重复的子字符串、字符串总结、双指针回顾

双指针法是字符串处理的常客,在翻转和替换部分经常用到。KMP算法是字符串查找最重要的算法。

2024-05-16 20:33:57 890

原创 代码随想录算法训练营第八天 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词、卡码网:55.右旋转字符串

空间复杂度:O(n):Java中的字符串不能修改,只能覆盖,所以需要额外创建一个char数组。分析:时间复杂度:O(n),空间复杂度:O(1)。分析:时间复杂度:O(n),空间复杂度:O(n)。分析:时间复杂度:O(n),空间复杂度:O(n)。分析:时间复杂度:O(n),空间复杂度:O(n)。分析:时间复杂度:O(n),空间复杂度:O(n)。分析:时间复杂度:O(n),空间复杂度:O(n)。

2024-05-15 21:36:48 910 1

原创 代码随想录算法训练营第七天 | 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和

又认真看视频梳理了一遍逻辑,去重部分比一刷的时候清晰很多。但是在ArrayList的使用上还是掌握的不太好。比如新建List的时候应该是new ArrayLIst();将结果加入res时需要先Arrays.asList(),再add进List中。下面总结一下Java中集合框架底层数据结构。首先是Collection接口下面的集合。242.有效字母的异位词和383.赎金信都用到了数组作为哈希表。因为这两道题都是限制在小写字母的范围内,范围有限,且需要得到字母是否出现过。

2024-05-14 21:26:06 1068 4

原创 代码随想录算法训练营第六天 | 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

今天开始学习哈希表,HashMapMapHashtableMapHashMapHashMapHashMapHashMapHashMapHashSetSetHashMapHashSetTreeMapTreeSet。

2024-05-13 21:47:52 641 2

原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

学习了虚拟头结点。

2024-05-11 17:57:25 868 2

原创 代码随想录算法训练营第三天 | 203.移除链表元素、707.设计链表、206.反转链表

分析:时间复杂度:O(n),空间复杂度:O(1)。

2024-05-10 22:24:20 261

原创 代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,数组总结

数组是存放在连续内存空间上的相同类型数据的集合。但二维数组的存放空间不连续,是以行为连续的空间。

2024-05-09 19:42:55 1233

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

之前零零散散刷过一些题,所以对二分法还有点记忆。虽然大概知道开闭的一些需要注意的点,但在实际做的时候还是错了好几次才通过。首先是在循环里没有写middle的赋值,很粗心。然后是忽略了right的初始赋值时开闭区间的问题,导致错误。

2024-05-09 00:02:34 758

空空如也

空空如也

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

TA关注的人

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