自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录第41天 | 动态规划part03

● 343. 整数拆分● 96.不同的二叉搜索树。

2023-12-19 21:56:20 926

原创 代码随想录第39天 | 动态规划part02

● 62.不同路径● 63. 不同路径 II。

2023-12-19 21:07:40 1451 1

原创 代码随想录第38天 | 动态规划part01

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

2023-12-18 21:47:11 864 1

原创 代码随想录第35天 | 贪心算法 part04

● 860.柠檬水找零● 406.根据身高重建队列● 452. 用最少数量的箭引爆气球。

2023-12-14 22:00:05 851 1

原创 代码随想录第34天 | 贪心算法 part03

● 1005.K次取反后最大化的数组和● 134. 加油站● 135. 分发糖果。

2023-12-13 22:01:53 892 1

原创 代码随想录第31天 | 贪心算法 part01

455.分发饼干● 376. 摆动序列● 53. 最大子序和。

2023-12-11 22:14:21 915 1

原创 代码随想录第32天 | 贪心算法 part02

● 122.买卖股票的最佳时机II● 55. 跳跃游戏● 45.跳跃游戏II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:本题本质上是选取数组中差值最大的两个数(还是按顺序来的),也就是nums[i+n] - nums[i]的最大值。但是交易不只一次,也就是计算多次差值的和,因此涉及到 多次数 小差值 和 少次

2023-12-11 22:08:21 848 1

原创 代码随想录第27天 | 回溯算法part03

● 39. 组合总和● 40.组合总和II● 131.分割回文串。

2023-12-06 22:00:42 804 1

原创 代码随想录第25天 | 回溯算法part02

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。关键:本题就是其余思路和上一题相同。本题k相当于树的深度,9(因为整个集合就是9个数)就是树的宽度。sum为统计已有数字加起来的总和,会随着每次迭代更新,因此加入形参中。其实这里sum这个参数也可以省略,,然后判断如果target为0了,说明收集到符合条件的结果了。target为总和应该达到的目标,可使用全局变量,不用每次都传入。同理,剪枝操作也很容易想到。

2023-12-04 21:37:13 839

原创 代码随想录第24天 | 回溯算法part01

回溯是递归的副产品,只要有递归就会有回溯。。。如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。那么既然回溯法并不高效为什么还要用它呢?因为没得选,一些问题能暴力搜索出来就不错了,撑死了再剪枝一下,还没有更高效的解法。关键:如何理解回溯法,是的,所有回溯法的问题都可以抽象为树形结构!因为回溯法解决的都是在集合中递归查找子集,。递归就要有终止条件,所以必然是一棵高度有限的树(N叉树。

2023-12-03 22:05:13 855 1

原创 代码随想录第18天 | 二叉树 part05

为切割点,先切中序数组,根据中序数组,反过来再切后序数组。一层一层切下去,每次后序数组最后一个元素就是节点元素。本题是从两个数组中提取信息进行构建二叉树。递归步骤如下,先处理后序数组,后处理中序数组,再转回后序数组。

2023-11-28 18:31:41 916 1

原创 代码随想录第17天 | 二叉树part04

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。本题同样使用递归(DFS)。在主函数之外使用一个递归函数,如果为AVL则返回树的高度,不是则返回-1.那么如何标记左右子树是否差值大于1呢?如果当前传入节点为根节点的二叉树已经不是二叉平衡树了,还返回高度的话就没有意义了。所以如果已经不是二叉平衡树了,可以返回-1 来标记已经不符合平衡树的规则了。明确终止条件。

2023-11-27 22:06:08 782

原创 代码随想录第16天 | 二叉树part03

给定一个二叉树,找出其。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。可得,本题中我们通过后序求的根节点高度来求的二叉树最大深度。定单层递归的逻辑:先求它的左子树的深度,再求右子树的深度,最后取就是目前节点为根节点的树的深度。这种思路对多叉树也一样,对每个分叉的长度拉成一个数组,再取最大值。迭代法,使用层序遍历正好,因为计算的是层数。注意是迭代,所以有for循环。

2023-11-26 21:56:09 321 1

原创 代码随想录第13天 | 栈与队列part03

给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:在线性时间复杂度内解决此题。关键思路:自己创建一个子队列,维持这个队列保持单调递增或者递减。比如:让出口处元素保持最大,后面的元素依次递减,那么就在传进元素时,不断留下更大的,抛出小的,直到后面进入队列的元素没有前者大为止。

2023-11-21 21:57:56 25

原创 代码随想录第11天 |栈与队列part02

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。首先进行分析:闭合正确的前提是,左右括号数量相等;其次才是左右括号从内向外一一匹配。同样,不匹配也就只有三种可能:左括号大于右,右括号大于左,左右匹配时种类不同。方法就是:每匹配到一个左括号,就把它相对应的右括号压入栈中;每读到一个右括号,如果栈顶和它相同,就挪出去。不相同则直接报错。如果字符串没读完,栈已经空了,也同样报错。直到最后看栈是否为空。

2023-11-20 20:09:16 32 1

原创 代码随想录第10天 | 第五章 栈与队列part01

使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。本题是用栈去实现队列的功能。题目也明确了方法:使用两个栈实现此功能,一个输入栈一个输出栈。两次先进后出便是先进先出。本题关键反倒不是思考的过程,而是对各语言自己封装的栈一个熟悉和运用的过程,无论是c++ STL的Stack,还是java自己的Stack类和Deque类。毕竟不用真的自己造轮子。

2023-11-19 21:26:14 41 1

原创 代码随想录第8天| 字符串part01

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”]在反转链表中,使用了双指针的方法。那么反转字符串依然是使用双指针的方法,只不过对于字符串的反转,其实要比链表简单一些。

2023-11-16 22:15:28 57 1

原创 代码随想录算第7天 | 哈希表part02

接下来移动left 和right,因为i是每轮才移动的所以当轮不能动。如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组从大到小排序,所以。

2023-11-15 22:45:58 40

原创 代码随想录第6天 哈希表part01

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true示例 2: 输入: s = “rat”, t = “car” 输出: false你可以假设字符串只包含小写字母。关键:只需要判断每种字母出现的频率,使用哈希表(数组)储存,而不必考虑字母的ASCII值。暴力解法为On2,无需赘述。

2023-11-13 22:24:33 24

原创 代码随想录 day4 第二章 链表part02

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。注意是每隔两个交换一次,因此操作应当以两个节点为单位。自己想确实很混乱,但是看解析一看就懂。用了虚拟头节点cur,还用了另外三个节点引用保存cur.next, cur.next.next和cur.next.next.next. 用缓存的原因是可以防止超时。

2023-11-12 21:58:45 48

原创 【代码随想录第三天】

代码随想录第三天 链表

2023-11-11 20:32:20 16 1

空空如也

空空如也

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

TA关注的人

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