自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 200. 岛屿数量

【代码】200. 岛屿数量。

2024-12-21 19:23:24 206

原创 2545. 根据第 K 场考试的分数排序

遍历列表,dict1记录每一行的数据,dict2 记录k列数据以及对应的行。根据排序后的dict2,依次获取对应行的数据。对k列数据进行降序排序dict2。

2024-12-21 16:16:47 535

原创 3138. 同位字符串连接的最小长度

dict1对应同位符次数,则说明此同位符是可以构成字符串的。从len(s)-1开始遍历,若 len(s)%i。若存在多个同位符的情况,则选取字符串长度最小的。

2024-12-20 16:09:36 302

原创 203. 移除链表元素

当pre.next and pre.next.val==val时,说明下一结点是符合删除条件的结点,则进行删除操作,否则继续往下遍历。使用新链表=[-1](可随意设置)+head。考虑到删除头结点情况。

2024-12-17 20:43:08 267

原创 287. 寻找重复数

遍历列表,如果数据存在于集合中,则为重复数。用集合来存储列表数据。

2024-12-17 18:10:05 167

原创 48. 旋转图像

则用re来存储原列表每列从下往上遍历的数据,然后赋值给matrix即可。第N行的数据=原列表第N列数据从下往上遍历。

2024-12-16 19:22:19 301

原创 54. 螺旋矩阵

若复制代码运行报错,则注意看下代码里的martix是否与题目给的方法的参数不一致。遍历顺序:向右、向下、向左、向上,循环遍历,直到遍历结束。当按顺序遍历结束时,缩小边界。

2024-12-16 16:42:02 179

原创 209. 长度最小的子数组

re=0 表示当前为第一个条件成立的窗口,直接赋值大小,re!=0 ,则比较满足条件的当前窗口和上一个窗口的大小,哪个小就赋值给r。若s-nums[l]>=target,则说明当前符合条件的窗口可以继续缩小窗口,则缩小窗口。re:最小子数组(最小窗口)长度。

2024-12-15 15:18:44 173

原创 76. 最小覆盖子串

l表示滑动窗口初始位置,r表示窗口最末位置,flag表示当前窗口是否全部包含覆盖字符,是True,否:False,re表示最小覆盖子串。if len(re)==0 or len(re)>=r-l+1:加上len(re)==0原因:由于最小覆盖字符初始时设置为’ ',则第一次获取到覆盖窗口时,应直接将窗口的字符串赋值给re。则要去判断缩小窗口(l向右移动)后的窗口还能全覆盖字符t吗,如果覆盖则继续缩小窗口,但缩小后不能覆盖,则说明当前窗口已经是覆盖字符的最小窗口,不能再缩小了,只能扩大窗口。

2024-12-15 14:09:19 341

原创 111. 二叉树的最小深度

1.左右子树都为空,则最小深度=1(只有根节点)(也可理解为 min(0,0)+1)+1原因:递归的是左右子树,找到最小深度后,还要加上根节点即为整个二叉树的最小深度。2.左子树为空,右子树不空,则最小深度=右子树最小深度+1。3.左子树不为空,右子树为空,最小深度=左子树最小深度+1。4.左右子树不为空,最小深度=左右子树最小深度+1。

2024-10-19 10:55:52 265

原创 100. 相同的树

先比较当前结点,当前结点相同,则去比较左结点,接着比较右结点。

2024-10-19 09:57:50 240

原创 239. 滑动窗口最大值

当当前值大于等于maxs列表里的值,则删除maxs列表比它小的值,因为这个值与比它小的值所共处的窗口中,它是最大值,那就没有必要留下比它小的值(可以假设成遍历到的值为区间的最后一个数来理解,那这个区间里,当前数是区间最后一个数,而自己又是最大值,说明自己是此区间中的最大值)maxs[0][1]:说明当前窗口的最大值是窗口的第一个数,向右滑动至下一个窗口,下一个窗口无这个值(不参与下一个滑动窗口),所以要删掉对应的值。先创建一个长度为k的滑动窗口,接着依次往右滑动窗口。t:存放每个滑动窗口的最大值。

2024-10-18 16:46:55 320

原创 11. 盛最多水的容器

一个容器所能盛的最大水容量取决于构成这个容器最短那条线的高度。

2024-10-17 16:12:10 181

原创 72. 编辑距离

2.0~j-1 可以弄出word1=word2,也就是0-i可以弄出word2 0~j-1的字符串,则此时word1需要再加一个字符才能相等。dp[0][j]:0代表空字符串,可以理解为空字符变成字符串需要插入字符的次数 即次数为 j。3.0~i-1 可以弄出0~j-1字符串,则word1需要再添加一个字符才能相等。i代表 word1字符串0~i j代表word2字符串0~j。dp[i][0]: 字符串变成空字符串需要删除的次数,即次数为i。j,取操作次数最少的步骤即可。j-1字符串所需要的次数。

2024-10-10 00:52:19 647

原创 75. 颜色分类

从r到len(nums)-1继续进行排序,从尾部开始,将最大值放置尾部。先排最小的数,将最小的数都放至列表前面 则0~r-1都是最小值。

2024-10-10 00:26:11 243

原创 1143. 最长公共子序列

当text1[i]==text2[j]时,当前字符相同,此时的最长公共子序列长度=text1[0:i]、text2[0:j](0~ i-1、0~j-1 )之间最长公共子序列+1。text1[0:i]、text2[0:j]是代表 0~ i-1、0~j-1 (字符串的截取s[i:j]取不到j位置的字符,而是j-1)dp[i][0]、dp[0][j] 代表其中任一字符串为空时的公共子序列,自然是0 为了方便,初始化dp为0。=text2[j]时,当前0~ i、0~j最长公共子序列为下方最长公共序列。

2024-10-09 23:23:31 358

原创 5. 最长回文子串

dp[i][j]回文:s[i]=s[j]且[i-1:j-1]也为回文。从第一个字符开始遍历,判断对应字符串是否是回文且是不是最大长度。dp[i][j] 表示下标位置i到j的字符串是否是回文的情况。时间复杂度:O(N^3)状态初始化为False。

2024-10-08 17:12:00 491

原创 32. 最长有效括号

2.遍历原字符串s,最长连续标识即为最长有效括号的长度。匹配,则出栈,此时标识已匹配的字符。

2024-10-08 15:47:02 191

原创 295. 数据流的中位数

(self.stack[t//2-1]+self.stack[t//2])/float(2),记得要用float。中位数:有序列表的中间值,用sort()进行排序。

2024-10-08 12:14:00 184

原创 347. 前 K 个高频元素

4.s1中会有空的情况 如nums =[1,1,1,2,2,3] ,次数4、5、6都没有,为[],所以用t来存储次数不为空的数字(排好序),t[0:k]即为前K个高频元素。如nums =[1,1,1,2,2,3] len(nums)=6 有可能一个数字出现6次的情况。3.s1是记录数字出现0-n次的情况,是有序的,所以从右往左遍历,先遍历到的都是次数最大的。1.哈希集合记录每个数字出现的字数。2.s1来记录出现次数对应的数字。时间复杂度:O(Nlogn)

2024-10-08 12:01:17 316

原创 152. 乘积最大子数组

mins:记录当前位置最小乘积,因为当前位置的最大乘积 有可能是i-1的最小乘积*当前位置。如i-1最小乘积为-3,最大乘积为4 i当前位置值为-2 则。dp[i]最大乘积自然是-3*(-2)=6。maxs:记录当前位置最大乘积。

2024-10-05 18:08:08 199

原创 208. 实现 Trie (前缀树)

【代码】208. 实现 Trie (前缀树)

2024-10-05 16:57:18 111

原创 84. 柱状图中最大的矩形

当前柱子heights[i]小于t[-1]位置柱子,说明t[-1]位置右边的最小柱子出现了,而t[-1]位置左边最小柱子为t[-2](单调递增栈),此时可以计算出以t[-1]位置柱子围成的最大面积。首先下标为0入栈(初始化),接着,当前柱子heights[i]大于等于t[-1]位置的值,说明t[-1]右边最小未出现,将当前柱子入栈。heights首末尾加上0 : 预防 [2,4,6,8]情况 2无左边最小值 列表数字无右边最小值。

2024-10-05 15:56:45 495

原创 739. 每日温度

从第二个温度开始,如果当前温度大于t[-1]位置的温度,则说明找到t[-1]位置温度的下一个更高温度,则修改对应的s。若t=[],说明当前温度高于此位置前的所有温度(即当前位置之前的温度都找到了自己与之的最高温度)。若当前温度小于t[-1]位置温度,说明温度比t[-1]位置温度还低,入栈,继续遍历找比它高的温度。遍历结束后,对于s[i]==-1:说明找不到与之对应最高温度,则赋值为0。

2024-10-04 23:36:59 171

原创 394. 字符串解码

对之前入栈的数据进行出栈操作,遇到’['说明已找到此时需要循环的字符串s,将s反转(栈先进后出,反转后才是原字符串)继续出栈,若出栈的数字,找到非数字为止,则非数字之前的数据n即为要循环的次数。找到循环的字符串和循环次数后,进行循环,接着将循环后的字符依次存入栈t。

2024-10-04 22:45:34 370

原创 155. 最小栈

按栈的特点:顶部即列表尾部。

2024-10-04 22:04:52 349

原创 131. 分割回文串

获取每次分割,判断分割部分是否是回文。

2024-10-04 21:53:10 253

原创 79. 单词搜索

未终止,继续循环:记录当前已走过位置(等于work[k]),以当前位置向四周遍历,找到则往对应方向继续循环;四个方向都找不到匹配,则回退再继续遍历。v:代表等于work[k]且已走过的位置。找到了:终止(先判断匹配再判断找到)

2024-10-04 17:44:56 701

原创 134. 加油站

假设起始位置前的净油量和为A,起始位置开始到末尾(-1这个位置)的净油量为B 即能回到起始位置需要总油量为A+B,即A+B>=0时,说明能回到起始位置(循环一圈)到达当前位置total

2024-09-26 01:16:06 319

原创 77. 组合

想象成由1-n组成的列表可以生成长度为k的组合数。

2024-09-24 16:50:52 227

原创 122. 买卖股票的最佳时机 II

卖出最大利润的情况:当天卖出比前一天卖出利润小,说明前一天就是卖出的最好时期,前一天卖出 : 则今天就是购买的日期 ,买入最小价格必然是今天(新一轮的查找卖出最大利润),则今天买、卖,利润为0。prices.append(0) 预防[1,2,3,4,5]情况。假设dp代表当天卖出的利润。mins代表买入的最小价格。

2024-09-24 12:37:23 336

原创 207. 课程表、210. 课程表 II

dict1用来装有入度的结点以及对应的入度数(如:[0,1] 学了1才能学0:即1指向0,即只有0有入度 所以prerequisites每个值i的i[0]即为有入度的结点)在遍历无入度结点时(代表选这门课程),因为有指向,所以 对应指向值的入度-1,当对应指向值入度为0时即作为下一层的无入度结点 循环遍历。遍历结束后,若dict1中有入度大于0,说明无法完成所有课程的学习。第一层:当前prerequisites无入度的结点。t:表示当前层无入度的结点(入度为0)n:表示下一层无入度的结点。

2024-09-22 15:08:10 287

原创 994. 腐烂的橘子

先找出未被感染的橘子总数s,找出已腐烂的橘子作为第一层,这一层(当前q)的橘子同时在1分钟内分别去感染相邻未腐烂的橘子,即遍历结束q,只要有感染(不管有多少个腐烂橘子去感染未腐烂的),时间+1。则遍历q的时候,把q.left、q.right装进next中,遍历q(当前层)结束后,将下一层赋予q,即q=next,继续重复操作。next:腐烂橘子要感染的橘子(即为下一次腐烂的橘子)q:装着当前腐烂的橘子位置(如二叉树的层级遍历 )q装的是当前层的结点,next装的是下一层的结点。s:未被感染的橘子总数。

2024-09-22 12:45:41 380

原创 695. 岛屿的最大面积

以当前陆地组成的岛屿面积=当前陆地面积+向上的陆地面积+向下的陆地面积+向左的陆地面积+向右的陆地面积。往当前的上、下、左、右位置分别找陆地位置,为陆地。1>标记为2:代表已经遍历过的陆地。只有当前是陆地,才会构成岛屿。2>记录当前方向的陆地总数。当前是陆地,进入回溯。

2024-09-21 20:46:02 317

原创 463. 岛屿的周长

如果这个陆地上、下、左、右有陆地相连,则这个岛屿的周长=4-相邻陆地的边的长度。

2024-09-21 19:54:57 233

原创 35. 搜索插入位置

2>target大于首位,小于末位,则进行插入位置的查找,存放位置规律 值大于前一个数、小于或等于后一个数。1.先用in方法判断列表中是否有target,有则用list.index()直接找出对应下标。1>列表的in方法,有则返回True,无则返回False。列表为空或 target<=首位,则位置在首位。target比末位还大,则在末位的后边。2.列表不存在target。

2024-09-20 18:03:44 286

原创 4. 寻找两个正序数组的中位数

2>数组长度为偶数,则是中间两个的和除以2 需要注意的一点是,除数除除数,得到的数是整数,所以需要进行数据的转换 counts/float(2) 将2转换成float类型,或者将counts转换成float类型也行。如果其中一个数组为空数组,则直接进行中位数的求解。1>数组长度为奇数,则中间值为中位数。

2024-09-19 14:30:08 218

原创 33. 搜索旋转排序数组

直接用index即可。

2024-09-19 13:44:54 104

原创 34. 在排序数组中查找元素的第一个和最后一个位置

存在,则找出第一个等于target值的列表位置,即目标值在列表中的开始位置。接着在当前位置继续往下查找,找到最后一个目标值等于列表值的位置。先判断target是否存在列表中,不存在直接输出。

2024-09-19 12:53:13 365

原创 17. 电话号码的字母组合

track表示一种组合,当找到一种组合后进行回退。

2024-09-19 11:19:01 394

空空如也

空空如也

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

TA关注的人

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