自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode796 旋转字符串

strstr函数在str1中查找第一次出现str2的位置,并返回一个指针指向str2在str1中第一次出现的地址,或者如果str2不是str1的子字符串,则返回一个空指针.在destination字符串末尾的 '\0' 被source字符串的第一个字符重写,拼接之后的新字符串末尾带有'\0'在destination字符串末尾拼接一个复制的source字符串,返回指向destination字符串的指针.把source指针指向的字符串复制在destination指针指向的空间,包括字符串末尾的'\0'

2024-09-16 14:45:24 403

原创 队列(C语言实现)

1.1 定义:队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头int front;int rear;}QueNode;int size;}Queue双端队列是指允许两端都可以进行入队和出队操作的队列。其元素的逻辑结构仍是线性结构。将队列的两端称为前端和后端,两端都可以入队和出队。

2023-09-18 15:23:50 2831

原创 栈(C语言实现)

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO)的原则。注:栈的数学性质n个不同的元素进栈,出栈元素不同排列的个数为2.栈的基本操作// 初始化栈// 入栈// 出栈// 获取栈顶元素// 获取栈中有效元素个数// 检测栈是否为空,如果为空返回非零结果,如果不为空返回0// 销毁栈采用顺序存储的栈称为顺序栈,它利用一组地址连续的存储单元。

2023-09-17 12:07:53 1071 1

原创 线性表(顺序表和链表)

由于nums1数组开辟的是两个数组合并后的空间,如果正向合并,那就必须要移动数据,那样的话复杂度就会增加,所以如果采用倒着遍历的方法来合并,由于nums1最后的位置为空,所以不用担心覆盖掉没有判断过的元素,所以使用三指针法。4.由于是用小于目标值的链表链接大于目标值的链表,所以小于目标值的尾节点原本的next会被更改,但是大于目标值的链表的尾节点的next还连接着原来链表中的节点,需要置空。当一个链表为空时,剩下的链表只需要将剩下链表的头节点连到合并后的链表尾部即可,不用一个一个连。如果链表无环,则返回。

2023-07-28 19:34:57 229 1

原创 数据结构概述及时间复杂度和空间复杂度

重点是时间复杂度错题总结

2023-07-28 17:22:28 106 1

原创 来一起学习01背包!!!

动态规划,学习01背包问题

2023-06-27 22:09:48 150 2

原创 统计一个32位二进制串中一的个数

类比十进制数,我们通过模10(%10)获得十进制数的最后一位数,然后除以10(/10)跑去最后一位数,那么同理,在二进制中我们同样可以通过这种方式来获取二进制数的每一位,以此来统计二进制数中1的个数。将我们的方法修改为位运算,基本思路为,通过位运算,每次右移一位,判断该位是否为一,这样就可以避免判断负数的问题。所输入的二进制数n,每次都与(n-1)进行按位与操作,直到n的所有位都变为0,此时,循环的次数即为n中1的个数。方法三显然是三种方法中的最优解 ,方法一存在局限,需要考虑负数的情况。

2023-05-17 22:06:37 149 1

原创 力扣刷题日常 1419.数青蛙

如果遇到了一个c,但是k的个数不是0,那就说明前面有一只青蛙被解放了,那就让这只青蛙叫,相应的我们k的个数要减一,表示被解放这只青蛙又要叫了,如果遇到了c,k的个数又为0,那就说明又有青蛙叫,但没有解放的青蛙,那就要加一只。2.计每个字母的个数,全都相同就是合法字符串,然后看第一个字母有几次,就有几只,后来发现,一只青蛙不是只叫一声,他可能叫了一声,后面又跟着其他青蛙叫了,而题目要的是最少的青蛙个数。2.五个字符c出现了才会有r,然后依次有oak,所以,后续的字母不能比前面的字母多,否则就不合法。

2023-05-06 22:28:21 82

原创 力扣刷题日常 1003 检查替换后的词是否有效

开始是所给的字符串s,结尾是一个空字符串。那么需要注意的是,我们这个字符串在最初始时是一个空字符串,而我们是在不断的插入“abc”,所以显然我们的字符串中,一定只有'a' 'b' 'c'三个字符。2.所以我们本来要找abc就变成了cba,我们定义一个字符缓冲区StringBuffer来记录我们栈口的三个元素,碰到了字符c,我们就把前三个元素弹出来看看是不是cba,如果不是,那显然他无法满足题目中的条件,如果是就消掉。3.最终检查我们的栈是否为空,如果为空,就达到了我们的要求,到了最后一步。

2023-05-03 22:03:39 45

原创 力扣刷题日常 15.三数之和

力扣刷题日常:双指针法解三数之和

2023-05-01 21:52:55 42 1

原创 力扣刷题日常 2423.删除字符使频率相同(4.29每日一题)

首先题目说明字符串由小写字母构成,我们想到使用长为26 的数组来记录每个字母出现的次数,那么我们的数组长为26,那么没有出现过的字母下标对应的数组元素为0,所以如果他是一个平衡字符串,那我们这个数组只可能是有两种元素,那就是0还有公共的出现次数。然后我们这道题就完成了,这道题开始我以为很简单,但是在进入了错误的思路后,却多次出错,所以在一条路走不通时,不能不舍得舍弃敲好的代码,不然会越陷越深的,这就是我从这道题中吸取的经验。在我经历了八次提交错误后,我删掉了所有的代码,改变了我的思路,也就是下面的思路。

2023-04-29 22:09:14 126 1

原创 力扣刷题日常 剑指offer07 重建二叉树

我们知道前序遍历的顺序为中左右,那么在前序遍历的数组中的第一个元素那自然就是根结点(中间结点)。在这个例子中,那么我们要构建的二叉树的根节点就是3。然后再看中序遍历,中序遍历的顺序为左中右,所以我们在中序遍历中找到中间结点root的位置,那么root的左边就是他的左子树,右边就是他的右子数。依然是一道关于二叉树的题目。所以我们可以通过中间节点,分别将前序和中序数组分为左,中,右三个部分。本题很明显传入的参数就是一个前序遍历的数组和一个中序遍历的数组。那么很明显前序数组与中序数组的数组长度肯定是一致的。

2023-04-28 16:56:40 48 1

原创 力扣刷题日常 700二叉搜索树中的搜索

以下是我的代码,虽然这个题比较简单,但是也算是我第一次正面面对递归了吧,纪念一下。每次递归需要传入一个要搜索的数值val,还有一个要搜索的搜索二叉树的根结点(我的理解是这样)这是我的第一次发表,也是我第一次自己写出来一个递归,第一次自己完成一道二叉树,记录一下。如果发现val小于根结点,那么应当去左子树搜索,若左子树为空,则return null。如果发现val大于根结点,那么同理去右子树搜索,若右子树为空,则return null。右:若中间结点的值大于val,传入root.right和val递归。

2023-04-27 21:17:57 51 1

空空如也

空空如也

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

TA关注的人

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