自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第五十五天|392.判断子序列、115.不同的子序列

双指针遍历两个字符串,直到其中任意一个串结束,如果s串到达末尾,则s串一定是t串的子序列。

2023-06-13 18:23:22 89 1

原创 代码随想录算法训练营第五十三天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和

在前一天的718. 最长重复子数组 相当类似,这个题目有印象童咏昕老师的算法课里面有将!与上面一题1143.最长公共子序列 如出一辙。从末尾往前考虑,得到。

2023-06-11 00:20:33 83

原创 代码随想录算法训练营第五十二天|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

下面代码,也就是dp[i][j]表示nums1中下标i处与nums2中下标j处最长重复子序列的长度,代码较为冗长。dp[i]表示以i结尾的最长递增子序列的长度。

2023-06-11 00:09:10 78

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

在找到相应的插入位置之后,首先尝试了新建一个temp结点存储val的值,但就得思考如何将其挂到树上,看了别人的题解才通透。和二叉搜索树节点的插入类似,在找到删除元素位置时的处理要分情况讨论,

2023-06-07 12:46:46 63

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

题目描述:给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在 唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。递归!全是递归!

2023-06-07 11:42:49 33

原创 代码随想录算法训练营第四十八天|打家劫舍系列问题

dp[i]表示从第一个房间到当前房间所能获得的最高金额。,直觉写出来的代码,居然就过了,和卡哥思路一样。213.打家劫舍II。

2023-06-05 21:32:31 45

原创 代码随想录算法训练营第四十三天|1049. 最后一块石头的重量 II 、494. 目标和 、474.一和零

1049. 最后一块石头的重量 II (0-1背包)老觉得这个题可以排序、做差什么的用贪心来做!看过题解发现确实有,倒还不如转为为0-1背包。

2023-05-31 18:41:22 76

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

真的把我难受死!写了两版都通过不了,但是执行代码都是对的!至今还不知道为什么!!!

2023-05-30 21:35:04 32

原创 动态规划---0/1背包问题

贴B站课程里的图。

2023-05-30 13:54:53 33

原创 代码随想录算法训练营第四十二天|416. 分割等和子集

请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。将问题转化为在数组中寻找是否有。将问题转化为0-1背包问题。滚动数组,二维数组的优化。

2023-05-30 13:48:58 34

原创 代码随想录算法训练营第四十一天|343. 整数拆分、96.不同的二叉搜索树

只初始化dp[0]就是可以的,只有1个结点的情况也可以根据推导公式演算,但其实1个节点只有一种情况要更容易想到。返回满足题意的二叉搜索树的种数。有了上面一题做铺垫这个题目就比较好想!),并使这些整数的乘积最大化。个节点组成且节点值从。你可以获得的最大乘积。

2023-05-29 21:14:20 32

原创 代码随想录算法训练营第三十九天|62.不同路径、63.不同路径Ⅱ

题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?这个挺好想,没什么好说的。dp数组记录到达每个网格的可能路径数。

2023-05-27 00:32:37 316

原创 代码随想录算法训练营第三十八天|509. 斐波那契数、

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。你有多少种不同的方法可以爬到楼顶呢?dp数组记录当n为不同数的斐波那契数。请你计算并返回达到楼梯顶部的最低花费。只记录两个数据,进而推导之后的数据。

2023-05-25 23:07:27 38

原创 代码随想录算法训练营第三十七天|738. 单调递增的数字

重要的是不眼高手低!想到什么办法就试试,别老想着直接写出最精简的方法,清楚用数组存储会更方便就试试。上面代码每出现不是递增的数后,都对之后的所有元素置9,出现了重复操作的现象。处理后: 3 2 9。正确答案: 2 9 9。对于遍历顺序:从左到右的话注意示例:332。当且仅当每个相邻位数上的数字。再想做处理就得从头开始。的最大数字,且数字呈。时,我们称这个整数是。

2023-05-25 13:32:51 47

原创 代码随想录算法训练营第三十六天|435. 无重叠区间 、763.划分字母区间、56. 合并区间

做过之后这三个题目就感觉挺简单的!

2023-05-24 14:13:08 41

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

在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆。可以射出的弓箭的数量 没有限制。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。

2023-05-23 10:32:20 100

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

给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。如果简单的对数组进行升序排列,其它都还好,但是对于最后翻转哪一个元素的判断要考虑的很多。很容易想到对数组先进行排序,优先翻转负数,之后根据剩下的翻转次数决定是否再进行翻转。此时k=3需要翻转,为了使和最大应该翻转的是1,而不是-2。此时k=1需要翻转,为了使和最大应该再翻转一次-2。

2023-05-22 11:36:54 34

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

122.买卖股票的最佳时机II题目描述:给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。假定第1天买入,第3天卖出价格高,获利为prices[3]-prices[1]。而55. 跳跃游戏题目描述:给定一个非负整数数组nums,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。

2023-05-20 10:53:02 41

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

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。此题有个误区:没想那么全面的情况下可能只去判断了当前叶子节点和当前个结点的大小关系,而忽略了往上追溯,这两个叶子节点和当前跟结点之上节点大小的判断,因此。对于本题测试用例,INT_MAX,INT_MIN不够用,换为LONG_MAX和LONG_MIN,对应的类型变为long。

2023-05-19 21:39:06 32

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

题目描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。一个人居然能有那么多孩子?!注定要饿死。

2023-05-19 13:25:10 108

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

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。最值得注意的一点区别是:收割结果之后不return,这是因为只有到空结点才做return操作,哪怕是叶子节点都要做当前结点值是否与目标值相等的判断。

2023-05-19 00:21:00 30

原创 代码随想录训练营第九天(KMP)|28.找出字符串中第一个匹配项的下标

题目描述:给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1。输入:haystack = "cleetode", needle = "leeto"next数组(前缀表)决定不匹配的情况下回退到哪个位置,重点是next数组的实现。

2023-05-18 17:58:10 22

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

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素。输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]正确输出:[[4,6],[4,6,7],[4,7],[4,7,7],[6,7],[7,7]]那就在单层操作的时候判断已经选取的元素是否有重复的。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。,剩下操作和全排列的题目一致。返回所有不重复的全排列。

2023-05-18 13:22:29 16

原创 代码随想录算法训练营第二十八天|93.复原IP地址(分割这部分还有问题)、78.子集 、90.子集II

(终止条件可以没有,我转不过来还是写上吧)

2023-05-16 22:12:21 36

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

题目描述:给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。

2023-05-15 11:06:41 34

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

返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回。能写出来这道题我觉得自己也没有很笨,不管高效与否,至少会举一反三了。的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。这道题目和昨天77.组合一样的。box数组算是当作hash表了。每个数字 最多使用一次。

2023-05-13 15:43:27 58

原创 代码随想录训练营第二十四天|77.组合

动态申请的一维数组在存放到结果集的时候要创建临时变量,不能直接将一维数组存放在到结果集,因为其地址会随着回溯不断变化。回溯算法是一种纯暴力搜索。所有的回溯法都可以抽象为一个树形结构。一般回溯函数的返回值为空,函数名设为backtracking。重点在于分析清楚中间的过程再套模板!题目描述:给定两个整数。

2023-05-13 11:22:47 56

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

之所以每次求完左右子树高度之后都判断左右子树高度差是否都合法,是考虑到可能会出现左右子树高度差都不合法的情况,都返回-1,这样的话左右子树已经都不合法,但是此根节点的左右高度差是合法的。这个题目还算是比较好想到的,我一直纠结的点在于既要返回根节点的高度,又想每个根节点判断完高度差之后返回false,看完讲解之后恍然大悟可以用数来代替false。采用先序遍历的递归方法,当找到叶子结点*b时,由于*b叶子结点尚未添加到path中,因此在输出路径时还需输出b->data值。,返回所有从根节点到叶子节点的路径。

2023-05-11 12:55:54 41

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

和104.二叉树的最大深度不同的是,最小深度的结点左右结点均为空。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。完全二叉树也是二叉树。给定一个二叉树,找出其最小深度。叶子节点是指没有子节点的节点。111.二叉树的最小深度。

2023-05-10 17:38:51 25

原创 代码随想录训练营第十五天|102.二叉树的层序遍历(先空着,不想用C写)、226.翻转二叉树 、101.对称二叉树2

题目规定结点个数>1,因此把根节点的左子树和右子树拆分成两个二叉树。真的嫌C麻烦,等学学C++再写。题目描述:给你二叉树的根节点。递归翻转每个结点的左右结点。示例如下:称为对称二叉树。

2023-05-10 16:28:59 20

原创 代码随想论训练营第十四天|遍历二叉树(掌握递归就够我用)

{ //二叉链表定义int data;//先序遍历的顺序建立二叉链表//按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树Tint num;T=NULL;//递归结束,建空树else{T->data=ch;//生成根结点//递归创建左子树//递归创建右子树int main()return 0;二叉树的遍历方式主要分三种:前序遍历、中序遍历和后序遍历。

2023-05-10 15:34:02 44

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

题目描述:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。遇到运算符的时候POP俩个数字字符串,运算结果重新压回栈中,最终栈内的唯一元素就是表达式的结果。解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。输入:tokens = ["4","13","5","/","+"]在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作,直到无法继续删除。返回一个表示表达式值的整数。题目描述:给你一个字符串数组。

2023-04-30 17:55:37 19

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

题目描述:仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作。对于这种题目,老是迷惑结构体定义的细节,需要在别人代码的基础上改动,逻辑是了解的。题目描述:仅使用两个栈实现先入先出队列。

2023-04-29 22:02:56 50

原创 代码随想录训练营第八天|344.反转字符串、541.反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer 58-II.左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。为减少空间的浪费,先计算出空格的个数,精准定义替换后数组的大小,时间复杂度仍是O(n)。每隔2k个反转前k个,尾数小于等于k个时候全部反转,尾数大于k个还是翻转前k个。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

2023-04-26 00:44:54 50

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

454.四数相加II题目描述:给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:示例:输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]输出:2解释:两个元组如下:类似于1.两数之和。用unordered_map来解决元素值作为key,出现次数作为value。value的值可以通过map[num]来获取。

2023-04-25 18:28:46 52

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

哈希表的适用场景:元素在集合中是否出现过哈希表的适用场景:元素在集合中是否出现过本人不可能用C写哈希的!

2023-04-24 21:13:14 164

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

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。将第一个链表连到第二个链表之后,如果存在环就转化成了找入环结点的问题,如果不存在环则说明无交点。快指针步长为2,慢指针步长为1,如果链表中存在环,那么快慢指针一定会相遇。总结来说:头结点到入环结点的距离=N*快慢指针相遇结点到入环节点的距离。:给你一个链表,删除链表的倒数第。题目描述:给你两个单链表的头节点。(数学问题,看讲解,不想看就记住)个结点,并且返回链表的头结点。

2023-04-22 22:32:46 135

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

203.移除链表元素题目链接题目描述:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回 新的头节点。示例先使头节点指向第一个与目标值不相同的节点。707.设计链表 (难度:中)题目链接这个题就是实现链表的增删查功能块,我设计的是单链表,增设头节点对链表操作。206.反转链表题目链接题目描述:给你单链表的头节点head,请你反转链表,并返回反转后的链表。

2023-04-21 16:47:58 90 2

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

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。之后再去确定i的位置,只要和sum>=target,就减去最前面的一个数,用i来标记,初值设为0,满足条件就加1。输出:[[1,2,3],[8,9,4],[7,6,5]]解释:平方后,数组变为 [16,1,0,9,100]示例:输入:target = 7,nums = [2,3,1,2,4,3]排序后,数组变为 [0,1,9,16,100]

2023-04-20 13:47:19 253 1

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

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。与目标值相同的元素不做处理,不同的元素依次覆盖原数组,新增变量记录新数组的下标位置,同时也是返回数组的实际大小。:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。遇到与目标值相同的元素将其后的元素依次向前移一位。元素的顺序可以改变。快指针:指向新数组所需要的元素。

2023-04-19 16:18:41 445 1

空空如也

空空如也

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

TA关注的人

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