自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构与算法笔记

队列 队列的规则是先进先出 队列跟栈十分相似,支持的操作也十分有限,基本操作也是两个:入队enqueue(),放一个数据到队列尾部;出队dequeue(),从队列头部取一个元素。 顺序队列和链式队列 队列和栈一样,是一种抽象的数据结构。它具有先进先出的特性,支持在队尾插入元素,在队头删除元素。跟栈一样,队列可以用数组来实现,也可以用链表来实现,用数组实现的栈叫做顺序栈,用链表实现的栈叫做链式栈,就可以得知,用数组实现的队列叫做顺序队列,用链表实现的队列叫做链式队列。 队列的操作需要两个指针,分别是指向队头的

2020-09-20 22:10:12 133

原创 括号与栈

有效的括号 今天看数据结构与算法的笔记的时候,正好学到栈,他里边提到了用栈来实现括号的匹配的举例,所以今天就决定做这道题了,虽然之前想的是今天做动态规划的总结,但是不得不说研究生的课程真的很难啊,今天一直在看课程相关的,就没时间了。 我们来看一下运用栈来做括号的匹配工作,从第一个括号开始应该是左括号,入栈,然后向后开始进行比较匹配,如果下一个还是左括号,压入栈内;如果是右括号,加入是和栈顶的括号相匹配,那么就可以把栈顶的元素出栈,如果不匹配或者是在做匹配比较的操作的时候发现栈空了,就说明出现了错误,不合法,

2020-09-19 21:01:58 413

原创 数据结构与算法笔记3

链表 数组和链表: 从底层存储结构上来看:数组需要一段连续的内存空间来存储数据,堆内存的要求比较高;链表恰恰相反,他不用连续的一段内存,它可以通过指针指向链表中的下一个元素的位置,从而来进行添加删除等操作。 单链表 链表通过指针将一组零散的内存块串联在一起,吧内存块称为链表的结点,为了可以找到链表的结点的下一个结点,所以每个结点中所存储的除去值之外还有下一个节点的地址,我们把这个记录下一个结点地址的指针叫做后继指针next。单链表中的第一个结点就是头结点,最后一个结点就叫做尾结点,头结点记录了整个链表的基地

2020-09-19 20:40:49 95

原创 回文数

回文数 最简单的办法就是将已有的数字反转,然后对比原来的数字和现在的数字是否相等,相等的话就是回文数,不相等就说明不是回文数。当然在x小于0的情况出现时,一定是不符合回文数的条件的,而等于0的时候是符合的,这样我们就可以对其进行先决判断。代码如下 if(x < 0 || x / 10 == 0) return false; if(x == 0) return true; int temp = x; long reverse = 0; wh

2020-09-18 22:44:32 105

原创 Z

z字形变换 这个是一道关于字符串的题目,就是相当于将一段已知的字符串按照要求排列进行重新排列。题目中的要求就是按照z字形对字符串进行摆放,然后再按照行数进行读取,得到新的字符串 每一行在取到下一个元素的时候与原来元素在旧的字符串中的位置下标的关系推导大概如下: 以numRows = 4 为例; 第一行的下标应该是0–6--12–18–,这中间的间隔一直都是6 第二行的下标应该为1–5--7–11–13–,间隔是4-2-4-2 第三行的下标为2–4--8–10–14–,间隔就变成了2–4--2–4 第四行的下

2020-09-17 20:07:51 117

原创 反转

复杂度学习笔记

2020-09-17 08:37:05 127

原创 数据结构与算法笔记2

数组 数组是一种线性表的数据结构,他用的是一组连续的内存空间来存储一组具有相同类型的数据。 定义中的线性表就是数据排列的像是一条线一样的结构每个线性表上的数据就最多有前和后两个方向,链表、队列、栈等也是线性表结构。而非线性结构常见的有二叉树,堆、图等他们里边存储的数据之间的关系不是简单的前后关系 连续的内存空间和相同类型的数据就使得数组可以实现随机访问,但是相对的对数组进行插入和删除操作就比较低效,有时候需要进行大量的平移数据。数组进行查找时,如果是根据下标进行查找的话,那他的时间复杂度是O(1),如果是根

2020-09-16 19:17:00 53

原创 数据结构与算法笔记1

可能一开始做不到理解力很强,但是希望通过积累能够获得一些知识 复杂度分析 时间空间复杂度可以用来衡量程序的执行效率,为什么需要复杂度分析呢? 答:测试结果非常依赖测试环境; 测试结果受数据规模的影响很大。 O表示法,之前没有学过这个的时候也会在看到某些题目的时候有提到这个,比如说O(n),等形式,现在就可以系统的学习一下之前的这个代表的是什么意思了 根据题主给出的程序以及解释就可以知道复杂度实际上是跟循环有着密切的关系的,它不代表着代码真正执行的时间,而是表示的是代码执行时间随数据规模增长的变化趋势,所以就

2020-09-15 14:44:13 55

原创 字符串

无重复字符串的最长子串 今天做的是查找字符串中不含有重复字符的最长的子串的长度,是对字符串的操作,主要有以下几种方法,参考别人的答案写的,希望自己有一天也可以不用看答案也能自己写出来,加油! 分析这个题目,想要找到相应的子串就必须自己找到他的头和尾,然后记录这个子串的长度,在不断循环中会找到很多个含有不同字符的子串,就需要不断地对比,将比较大的长度数值存入到结果当中就可以得到最终的结果。 首先呢,我们现要定义一些变量,他们分别表示的是子串的头和尾,以及子串的长度和最终结果长度 然后,我们就可以进行循环在整个

2020-09-15 13:48:48 103

原创 开学啦

2.力扣题库—两数相加 这个题目的知识点是对链表的操作,把一个多位数灿在链表内,从低位开始存入,一次后边存放的是高位数字。把两个链表中的数字相加,我们要的是相加的结果,存在一个新的链表中。相加的过程中按照数学来说有结果位和进位,就是加和的结果除10的余数是结果,商就是进位。 整个执行的过程如下 分两种情况: ①有一个数是0,那就可以直接返回另一个数所在的链表,也就是 if(l1->val == 0 && !l1->next) return l2; if(l2->val ==

2020-09-14 12:03:58 55

原创 第一天,加油

1.力扣题库–两数之和 题目理解:按照题目描述,其中符合条件的应该只有一组,参考题解后学会了一下三种办法: 第一种:暴力解决法,刚开始想到的就是暴力法,因为没有基础,思维比较简单,但是其缺点是他的复杂度比较高,时间复杂度为----,空间复杂度为---- 由于其比较简单易懂所以自己写了一下: vector<int> ans;//用来存储结果i,j for(int i = 0; i < nums.size(); i++){ //nums.size()是获取数组中究竟有多少个元素 for(in

2020-09-13 21:25:56 74

空空如也

空空如也

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

TA关注的人

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