机试
文章平均质量分 93
WWWWW~~
这个作者很懒,什么都没留下…
展开
-
专题六:栈与队列
一、基础知识队列是先进先出,栈是先进后出那么我这里在列出四个关于栈的问题,大家可以思考一下,以下是以C++为例,相信使用其他编程语言的同学也对应思考一下,自己使用的编程语言里栈和队列是什么样的。C++中stack 是容器么?我们使用的stack是属于那个版本的STL?我们使用的STL中stack是如何实现的?stack 提供迭代器来遍历stack空间么?相信这四个问题并不那么好回答, 因为一些同学使用数据结构会停留在非常表面上的应用,稍稍往深一问,就会有好像懂,好像也不懂的感觉。有的同学可原创 2021-05-10 19:30:46 · 293 阅读 · 0 评论 -
专题五:双指针法
一、双指针法将时间复杂度O(n^2)的解法优化为 O(n)的解法。也就是降一个数量级,题目如下:15.三数之和18.四数之和双指针来记录前后指针实现链表反转:206.反转链表使用双指针来确定有环:142题.环形链表II双指针法在数组和链表中还有很多应用,后面还会介绍到。二、示例 1:输入: “the sky is blue”输出: “blue is sky the”,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒叙了,那么再把单词反转一下,单词就正过来了原创 2021-05-09 10:49:05 · 336 阅读 · 0 评论 -
专题四:哈希表
一、基础知识哈希表是根据关键码的值而直接进行访问的数据结构。那么哈希表能解决什么问题呢,「一般哈希表都是用来快速判断一个元素是否出现集合里。」例如要查询一个名字是否在这所学校里。要枚举的话时间复杂度是O(n),但如果使用哈希表的话, 只需要O(1) 就可以做到。我们只需要初始化把这所学校里学生的名字都存在哈希表里,在查询的时候通过索引直接就可以知道这位同学在不在这所学校里了。将学生姓名映射到哈希表上就涉及到了「hash function ,也就是哈希函数」。哈希函数哈希碰撞一般哈希碰原创 2021-05-09 10:35:42 · 730 阅读 · 0 评论 -
专题三:链表
一、基础知识什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点是由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的类型单链表双链表循环链表链表的存储方式了解完链表的类型,再来说一说链表在内存中的存储方式。数组是在内存中是连续分布的,但是链表在内存中可不是连续分布的。链表是通过指针域的指针链接在内存中各个节点。所以链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,原创 2021-05-08 13:37:58 · 173 阅读 · 0 评论 -
专题二:字符串
一、字符串的反转1、可以使用C++的库函数reversereverse函数功能是逆序(或反转),多用于字符串、数组、容器。头文件是#include reverse函数用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素),reverse函数无返回值eg.string str="hello world , hi";reverse(str.begin(),str.end());//str结果为 ih , dlrow ollehvector<int原创 2021-05-08 11:25:18 · 265 阅读 · 0 评论 -
专题一:数组
一、基础1、数组是存放在连续内存空间上的相同类型数据的集合。2、需要两点注意的是数组下标都是从0开始的。数组内存空间的地址是连续的正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。3、如果使用C++的话,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。数组的元素是不能删的,只能覆盖。二、二分法前提:数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,原创 2021-05-07 11:38:37 · 193 阅读 · 0 评论
分享