自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 day28 力扣1047 删除字符串中的所有相邻重复项

参考day27有效的括号,使用栈实现,当遍历到的元素与栈顶元素(栈顶指针前一位)相同时,栈顶指针前移一位(相当于弹出元素),用循环继续判断。,做法与栈相似,需要注意的是输出时字符串结束的语句有些许不同。方法:输出整个栈,把栈当成字符串,当需要添加字符串结束语句。需要解决的问题三:用while循环还是for循环。需要解决的问题2:使用栈实现如何输出正向字符串。方法:当栈顶指针不大于0时,不进行判断。用双指针法实现,在原字符串上直接修改,需要解决的问题1:首元素的处理。方法:栈实现的话都可以。

2023-05-29 17:13:28 95

原创 day27 力扣20有效的括号

2:注意char中下标不能出现负数,否则越界,编写错误,所以令栈顶指针先加一后赋值(比较元素时不需要对栈顶指针-1)(另一种想法:只令右括号相应的左括号入栈,栈元素与字符串元素进行比较)重难点2:如何实现第二种情况的判断。重难点1:如何规划代码布局。时间/空间复杂度O(n)1:不需要所有元素进栈。

2023-05-25 19:15:07 107

原创 day26 力扣225 用队列实现栈

此时可以直观感受到更新队列首尾指针的重要作用:指针的位置一直在改变,更新后却不会影响队列操作。难点:理解做法的含义,区分与用队列实现栈的不同之处。

2023-05-23 00:34:31 121

原创 day25 力扣232用栈实现队列

需要判断stackout是否为空,否时把in栈中的元素都复制到out栈中,后pop出out栈top元素并保存。此时出现了错误(即注释掉的部分,导致pop出的元素一直显示越界,原因在改良代码中说明了)有点啰嗦,改良版:(减少对内存的访问次数)

2023-05-19 21:16:24 116

原创 day24 力扣27移除元素(双指针法系列)

(好处在于没有申请多余空间,在原数组上进行修改,只用一次for循环实现两个指针的移动)时间复杂度O(n),空间复杂度O(1)

2023-05-15 17:30:29 36

原创 day23 力扣459重复的子字符串

【KMP算法之求next数组代码讲解】https://www.bilibili.com/video/BV16X4y137qw?注意一个重复周期的计算。

2023-05-14 11:23:53 24

原创 day22 力扣28找出字符串中第一个匹配项的下标

注意细节,区分减一不减一,对k的操作差异!KMP算法有点难理解,之后再看看!时间复杂度O(nlen+hlen)弊端:时间复杂度O(n^2)不匹配时,找到原来匹配的位置。好处就是容易想到,好实现。对KMP算法的详细解释。画图辅助理解整个过程。

2023-05-11 19:50:04 61

原创 day21 力扣151反转字符串中的单词

此时选择这个顺序的好处显示出来:不许考虑两边的边界,即使左边界为空格也可以进行操作,只需要关注右边界字母和空格的分界。2.进行单个单词的反转:需要使用嵌套循环,固定一边端点i,另一边j往后遍历直至为空格,传参进行单词的翻转。于是简化①:进行传参,实现字母翻转(翻转整个字符串及翻转单个单词的操作通过传参进行)昨天的原代码:写法有点混乱,变量太多,重复的步骤也多,导致错误很多也不好找。1.进行整个字符串的反转-->直接传参。时间复杂度O(n)空间复杂度O(1)3.进行多余空格的删除。

2023-05-10 22:08:17 62

原创 day20 力扣58 II. 左旋转字符串

由此,可直接写一个转换两个数的函数,重复调用三次,一次是n前的字符,第二次是n后的字符,第三次是一整个字符串。

2023-05-09 23:18:41 34

原创 day19 力扣05 替换空格

时间复杂度O(n) 若不从最后开始往前遍历 则时间复杂度为O(n^2)需要注意的是申请新的数组时 长度应为n+1。

2023-05-08 18:11:21 35

原创 day18 力扣541反转字符串||

出现问题1:进行判断时,一开始写的是【 k=i+k<slen?则此时有一个错误:变成判断剩余个数大于k个/小于等于k个,故报错。出现错误2:right的下标起点。

2023-05-07 15:46:55 63

原创 day18 力扣344反转字符串

【代码】day18 力扣344反转字符串。

2023-05-07 14:41:18 124

原创 day18 力扣18 四数之和

另外,定义*returnColumnSizes大小的步骤也可以放在ans[anslen]=temp前后(空间在最开头申请)时间复杂度O(n^3)

2023-05-05 23:10:57 30

原创 day17 力扣15 三数之和

注意continue和break的区别。产生第二个思考点:与谁做比较?时间复杂度:O(n^2)

2023-05-04 23:26:14 40

原创 day16力扣383赎金信

【代码】day16力扣383赎金信。

2023-05-03 22:42:26 90

原创 day15力扣454 四数相加||

HASH_ADD_INT用法:参数1:哈希表;参数2:要添加的键值;参数3:哈希表结构的结构体指针。//声明了一个返回值为hashTable类型指针的函数find,find函数的返回值为一个地址。//HASH_FIND_INT用法:参数1:哈希表;参数2:要查找的键值的。(以下为原代码,此时我还未领悟到应该用结构体做。参数3:哈希表结构的结构体指针。//返回值:输入一个键值,哈希表则。出现了超越整形范围的问题。时间复杂度O(n^2),没有就返回NULL。

2023-05-01 01:23:56 48

原创 day14 力扣349 两个数组的交集

【代码】day14 力扣349 两个数组的交集。

2023-04-28 19:23:44 26

原创 day13力扣 有效的字母异位词

【代码】day13力扣 有效的字母异位词。

2023-04-27 17:50:50 36

原创 day12 力扣142 环形链表||

(通过数学计算进行分析)

2023-04-26 10:13:41 39

原创 day11 力扣02.07链表相交

一开始忘记了如何在找不到相交节点时输出null(以A链表长于B链表为例)

2023-04-25 23:20:57 73

原创 day10 力扣19 删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2023-04-24 22:53:59 31

原创 day9 力扣24两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。为了省去对头节点的判断,本题用虚拟头节点法,先令用于遍历的cur指向dummyhead,后按照步骤改变相邻两个节点顺序。本题要点,需要另设两个临时节点保存原来的一、三节点/对case2、3情况的判断。便于后面新节点的设置。

2023-04-23 18:10:10 25

原创 day8 力扣206反转链表

双指针法:申请一个cur指针指向头节点(用于遍历链表)、一个pre指针指向NULL(作为最后的头节点输出)、一个临时指针temp(用于保存节点指向的改变)问题:发现加上/*/head是否为空的判断时某些情况会运行出错 (虽然本来就是多余的),请你反转链表,并返回反转后的链表。题目:给你单链表的头节点。

2023-04-22 21:01:49 30

原创 day7 力扣707设计链表

稍作修改,此处进行分类讨论,若index=0,则表示进行一次头插法,比较巧妙,需要注意的是后续的判断往后挪一位,即少进行了一次遍历。申请临时节点pre用于遍历链表,找到下标为index的节点val,若遍历完未找到index则表明下标无效。// 现在,链表变为 1->3。在这一块出现的误区,要注意cur与i的起始位置,其他步骤跟add差不多,只增加了一个free()在插入完成后,新节点会成为链表的第一个节点。等于链表的长度,那么该节点会被追加到链表的末尾。的节点追加到链表中作为链表的最后一个元素。

2023-04-21 23:55:10 122

原创 day 6 力扣203移除链表元素

申请一个新的虚拟头节点完成头节点的任务、临时节点pre用于遍历、(新头节点返回),可以取消对head是否为空及head->next->val是否为val的判断,使后续对所有节点的操作都一致。需要注意对头结点的处理(当为NULL/指向第一个结点对应的val为目标val时),对尾结点的处理(next->val=NULL且对应的val为目标val时)申请一个pre结点,对链表进行遍历,找到对应的val等于目标val的结点,将其移除。以链表 1->2->6->3->4->5->6, val = 6 为例。

2023-04-20 18:23:20 26

原创 day5 力扣202快乐数

快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。:声明哈希表,用于记录sum出现的个数(本题关键在于‘无限循环’,若sum重复说明进入死循环),再通过传参改变sum的大小(当sum!如果 n 是快乐数就返回 True;不是,则返回 False。编写一个算法来判断一个数 n 是不是快乐数。

2023-04-19 13:35:38 37

原创 day4 力扣54 螺旋矩阵

链接给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix。

2023-04-18 16:26:01 54 1

原创 day3 力扣76 最小覆盖子串

总体采用滑动窗口(与之前相似),这次不同点在于输出的是子串而非长度,需要声明target变量用于记录目标元素位置,重新申请res字符串作为返回结果。最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。③(**待解决)出现重复元素如何解决。所有字符的子串,则返回空字符串。整个字符串 s 是最小覆盖子串。所有字符的最小子串。①字符串的长度如何表示。②最小覆盖子串如何输出。

2023-04-17 21:22:24 50

原创 打卡day2 904水果成篮(长度最小子数组相关)

明确题目要求:计算当前子数组长度外,还需要利用数组记录水果类型(用于进行条件判断),及此水果类型数量(隐藏)如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。可以采摘 [1,2,1,1,2] 这五棵树。可以采摘 [2,3,2,2] 这四棵树。可以采摘 [1,2,2] 这三棵树。①不知道如何判断水果种类是否已存在。可以采摘全部 3 棵树。

2023-04-15 17:07:24 56 1

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

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。类似双指针,右端点扩展,for循环计算sum,当sum>=target时保存数组长度,用while循环压缩左端点直到数组长度最小,输出。输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。·不知如何表示在不符合条件时返回。·不知如何对比返回长度的大小。

2023-04-14 16:28:59 128 1

空空如也

空空如也

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

TA关注的人

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