自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法训练营

题目描述:给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。题目描述:给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。如果树中有不止一个众数,可以按 任意顺序 返回。时间复杂度:O(n);空间复杂度:O(1)时间复杂度:O(n);空间复杂度:O(1)时间复杂度:O(n);空间复杂度:O(1)

2023-10-31 21:09:42 41

原创 【算法训练营】

修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。题目描述:给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。空间复杂度:O(1)节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。

2023-10-31 21:09:22 30

原创 算法训练营

修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。题目描述:给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。空间复杂度:O(1)节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。

2023-10-08 22:18:06 190

原创 算法训练营

如果存在多种有效的行程,请你按字典排序返回最小的行程组合。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。题目描述:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

2023-10-08 21:54:43 42

原创 算法训练营

题目描述:给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。你可以按 任意顺序 返回答案。题目描述:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。题目描述:给定一个包含重复数字的数组 nums ,返回其 所有可能的全排列。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。时间复杂度:O(n!空间复杂度:O(n)时间复杂度:O(n!空间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n*2。

2023-10-08 10:20:34 27

原创 算法训练营

题目链接: [78.子集](https://leetcode.cn/problems/subsets/)思路: 注意空集也是子集,因此res.append(path[:])需要放在最开头,不是在终止条件后。思路: 和上一题类似,但是需要考虑同一树层不能有相同值出现。思路: 类似于分割回文串,区别在于终止条件不同。时间复杂度:O(n * 2。空间复杂度:O(n)空间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n*2。

2023-10-05 12:01:49 30

原创 算法训练营

题目链接: [617.合并二叉树](https://leetcode.cn/problems/merge-two-binary-trees/)注:不能单纯的比较左节点小于中间节点,右节点大于中间节点就完事了,我们要比较的是 左子树所有节点小于中间节点,右子树所有节点大于中间节点。时间复杂度:O(log(n));空间复杂度:O(1)时间复杂度:O(n);空间复杂度:O(1)时间复杂度:O(n);空间复杂度:O(1)时间复杂度:O(n);空间复杂度:O(1)思路: 前序遍历+递归。思路: 和二分法类似。

2023-10-04 22:10:08 27

原创 算法训练营

题目链接: [112. 路径总和](https://leetcode.cn/problems/path-sum/)时间复杂度:O(n);空间复杂度:O(n)时间复杂度:O(n);空间复杂度:O(1)时间复杂度:O(n);空间复杂度:O(n)思路: 递归,了解各种遍历顺序就明白了。思路: 类似于所有路径的和,回溯法。思路: 层次遍历法最方便直观。

2023-10-04 21:23:58 21

原创 算法训练营

题目链接: [257. 二叉树的所有路径](https://leetcode.cn/problems/binary-tree-paths/)思路: 左子树左叶子和+右子树左叶子和,因此采用后序遍历。思路: 递归法,求解各叶子节点深度差,前序遍历。思路: 根节点到所有叶子节点的路径,前序遍历。时间复杂度:O(n);空间复杂度:O(1)时间复杂度:O(n);空间复杂度:O(n)时间复杂度:O(n);空间复杂度:O(1)

2023-10-04 20:24:18 23

原创 算法训练营

思路: 同上一题类似,区别在于不能重复使用数组元素,因此需要判断相同元素不在同一树层。思路: 需要加一个判断回文串函数,利用双指针即可解决。时间复杂度:O(n*2^n);空间复杂度:O(n)时间复杂度:O(n*2^n);空间复杂度:O(n)时间复杂度:O(n*2^n);空间复杂度:O(n)

2023-10-04 19:06:05 107

原创 算法训练营

时间复杂度:O(n*2^n);空间复杂度:O(n)时间复杂度:O(n*2^n);空间复杂度:O(n)思路:递归+构造号码字典。

2023-10-04 00:15:14 20

原创 算法训练营

思路:将问题具象化为高度固定的二叉树,树的宽度为集合长度n,高度为k的大小。时间复杂度:O(n*2^n);空间复杂度:O(n)

2023-10-03 11:56:27 29

原创 算法训练营

时间复杂度:O(n);空间复杂度:O(1)时间复杂度:O(n);空间复杂度:O(1)时间复杂度:O(n);空间复杂度:O(1)思路:递归+前序遍历。思路:递归+前序遍历。

2023-09-28 14:54:52 25

原创 算法训练营

时间复杂度:O(n);空间复杂度:递归法O(1)迭代法O(n)思路:个人喜欢递归法,但是层序遍历加队列也简单。时间复杂度:O(n);空间复杂度:O(n)时间复杂度:O(n);空间复杂度:O(n)思路:层序遍历+队列实现。

2023-09-20 16:12:26 22

原创 算法训练营

因此入栈时遍历顺序为逆序且中节点后需要加入空节点标记。时间复杂度:O(n);空间复杂度:O(n)时间复杂度:O(n);空间复杂度:O(n)思路:递归思想,按照遍历顺序来就行。

2023-09-19 16:37:13 19

原创 算法训练营

思路:基于小顶堆实现。小顶堆利用headq实现,之前使用headq.headpush(),若要实现大顶堆,则所有元素加负号再使用headq.headpush()。思路:用单调队列实现,只需要遍历一遍,重点在于利用底层deque构造单调队列。时间复杂度:O(nlogk);空间复杂度:O(k)时间复杂度:O(n);空间复杂度:O(k)

2023-09-19 11:05:44 31

原创 算法训练营

思路:后缀表达式的形式,可以理解为二叉树后序遍历。难点在于判断是否是运算符和怎么使用运算符。思路:用栈实现最方便,需要考虑三种不匹配的情况。时间复杂度:O(n);空间复杂度:O(n)思路:思路与上一题一模一样。

2023-09-17 22:06:58 29

原创 算法训练营

时间复杂度:O(n);空间复杂度:O(n)思路:两个队列,一个队列用于临时存储。思路:两个栈实现队列。

2023-09-15 23:25:24 26

原创 算法训练营

[TOC](代码随想录算法训练营|28. 实现 strStr();459.重复的子字符串)

2023-09-14 15:54:23 24

原创 算法训练营

思路:1、双指针均从后往前遍历;2、需要使用额外的 2*空格 个空间来存放%20(原始的空格已经占了1格)。注:python中,字符串是不可变类型,所以操作字符串需要将其转换为列表,因此空间复杂度不可能为O(1)思路:利用for循环找到2k的位置,再搭配反转字符串I即可。思路:split+双指针。时间复杂度:O(n)时间复杂度:O(n)时间复杂度:O(n)时间复杂度:O(n)

2023-09-13 14:50:53 34

原创 算法训练营

思路:使用哈希表,类型包括哈希数组、集合set和映射map(可以理解为字典),以及了解解决哈希冲突的两种方式:拉链法(链表)和线性探测法(顺序存进下一个空间)。思路:1、数组升序排列;2、遍历,左右指针从[i , len(num)-1]开始搜索;思路:同三数之和相同,加一个for循环即可。思路:哈希数组和字典均可解决此类问题。时间复杂度:O(n^2)时间复杂度:O(n^3)时间复杂度:O(n)

2023-09-12 19:42:29 32

原创 算法训练营

trick1:定义固定长度大小的哈希数组,但是字典可以不固定长度;trick2:判断有无交集的问题转化为数组中的统计数目的乘积>0。思路:使用哈希表,类型包括哈希数组、集合set和映射map(可以理解为字典),以及了解解决哈希冲突的两种方式:拉链法(链表)和线性探测法(顺序存进下一个空间)。思路:注意事项:先判断targat-value的值在不在字典再存字典,否则容易出现6=3+3的情况,导致返回值的两个索引相同。空间复杂度:空间上因为定义是的一个常量大小的辅助数组,所以空间复杂度为O(1)。

2023-09-11 21:54:48 21

原创 算法训练营

思路:虚拟头结点+双指针思想,引入虚拟头结点后,难度减小很多。此外主要注意的是慢指针移动到待删除的前一个指针即可,因此最初的快指针的平移步数为n+1。代码步骤:快慢指针法slow和fast:fast每次走两步,slow每次走一步:1、判断是否有环:slow与fast是否相遇;思路:1、计算链表A和B的长度,2、指针分别从A和B相同位置开始出发,找到相交的节点。2、判断入环节点:slow与fast相遇的位置即为入环节点。思路:递归法+链表的交换只需要交换链表的next指向。时间复杂度:O(log(n));

2023-09-10 17:42:42 14

原创 算法训练营

思路:掌握了虚拟头结点,思路不难,但是判断index和链表长度的地方需要思路清晰,同时判断循环条件需要注意。时间复杂度:O(log(n));空间复杂度:O(1)思路:注意循环条件为cur不为空。思路:掌握了链表的初始化定义。时间复杂度:O(n)

2023-09-08 21:41:46 14

原创 算法训练营

思路:双指针法(滑动窗口): 左指针和右指针组成滑动窗口,每次满足窗口的和满足要求(大于。左指针和右指针分别从两边开始遍历,大的值放在新数组最后面。时间复杂度:O(log(n));空间复杂度:O(n)思路:注意区间,如果选择左开右闭就一直保持左开右闭。target)时,记录窗口长度,找到最小的窗口。时间复杂度:O(n);空间复杂度:O(1)时间复杂度:O(n^2)

2023-09-07 16:55:22 24

原创 算法训练营

思路:双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。快指针负责找值,慢指针负责更新数组,从而达到原地删除数组元素的目的。要注意二分查找区间的闭合状态:左闭右开时,右区间为len(list);左闭右闭时,数组右区间为len(list)-1。时间复杂度:O(log(n));空间复杂度:O(n)时间复杂度:O(n);空间复杂度:O(1)思路:对于有序数组,考虑。

2023-09-06 19:54:49 200

原创 pandas简单学习

pandas简单操作学习pandas基本数据结构基本数据结构构建排序参考pandas基本数据结构 1. pandas中主要有两种数据结构,分别是:Series和DataFrame。 2. Series:一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。注意:Series中的索引值是可以重复的。 3. DataFrame:一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值

2021-04-24 21:17:56 74 1

空空如也

空空如也

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

TA关注的人

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