408
文章平均质量分 64
R-G-B
计算机硕士,机器视觉、图像处理
展开
-
删除链表的倒数第 n 个节点并返回链表的头指针
数据范围链表长度0\len\le10000≤n≤1000,链表中任意节点的值满足0\leval\le1000≤val≤100。给出的链表为1\to2\to3\to4\to51→2→3→4→5,n=2n=2.删除了链表的倒数第nn个节点之后,链表变为1\to2\to3\to51→2→3→5.要求空间复杂度O(1)O(1),时间复杂度O(n)O(n)给定一个链表,删除链表的倒数第n个节点并返回链表的头指针。这个里可以改进,不用pre。...原创 2022-07-23 11:59:26 · 174 阅读 · 0 评论 -
【P64-71】结构体struct
定义结构体创建对象,有三种方式创建对象原创 2022-07-25 15:25:37 · 28 阅读 · 0 评论 -
哈希表(hashtable)
哈希统计字符串,出现的次数。原创 2022-07-26 18:25:19 · 31 阅读 · 0 评论 -
BM55 没有重复项数字的全排列 & BM56 有重复项数字的全排列
字典序在数学中,字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法。这种泛化主要在于定义有序完全有序集合(通常称为字母表)的元素的序列(通常称为计算机科学中的单词)的总顺序。对于数字1、2、3…n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是54321。第一步举例。.....原创 2022-07-27 19:32:16 · 88 阅读 · 0 评论 -
BM58 字符串的排列
例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。输入一个长度为n字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。返回值[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]输入一个字符串,长度不超过10,字符只包括大小写字母。返回值[“aab”,“aba”,“baa”]说明返回[“ba”,“ab”]也是正确的。返回值[“ab”,“ba”]空间复杂度O(1),原地交换。...原创 2022-07-28 18:01:35 · 41 阅读 · 0 评论 -
BM57 岛屿数量
时间复杂度O(nm)O(nm)O(nm),其中mmm、nnn为矩阵的长和宽,需要遍历整个矩阵,每次dfs搜索需要经过每个值为1的元素,但是最坏情况下也只是将整个矩阵变成0,因此相当于最坏遍历矩阵2次。输入[[1,1,0,0,0],[0,1,0,1,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,1,1,1]]给一个01矩阵,1代表是陆地,0代表海洋,如果两个1相邻,那么这两个1属于同一个岛。(注存储的01数据其实是字符’0’,‘1’)输入[[1,1],[1,1]]...原创 2022-07-28 18:13:20 · 171 阅读 · 0 评论 -
时间复杂度、空间复杂度
第一个O(1)复杂度,没有递归,没有开辟任何连续的空间,只是定义考了一些变量被,常数级httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。原创 2022-07-30 10:48:05 · 32 阅读 · 0 评论 -
什么是缓冲区溢出?有什么危害?原因是什么?
所谓缓冲区可以更抽象地理解为一段可读写的内存区域,缓冲区攻击的最终目的就是希望系统能执行这块可读写内存中已经被蓄意设定好的恶意代码。按照冯·诺依曼存储程序原理,程序代码是作为二进制数据存储在内存的,同样程序的数据也在内存中,因此直接从内存的二进制形式上是无法区分哪些是数据哪些是代码的,这也为缓冲区溢出攻击提供了可能。由于栈是低地址方向增长的,因此局部数组buffer的指针在缓冲区的下方。...转载 2022-08-08 17:42:36 · 549 阅读 · 0 评论 -
时间片轮转调度算法
轮转调度算法Round-Robin(RR)在分时系统中都采用时间片轮转算法进行进程调度。时间片是指一个较小的时间间隔,通常为10-100毫秒。【百度百科】在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片.时间片的大小从几ms到几百ms.当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片原创 2022-08-09 13:30:52 · 16777 阅读 · 2 评论 -
OSI七层模型及数据传输过程
OSI七层模型及数据传输过程原创 2022-08-09 21:37:54 · 180 阅读 · 0 评论 -
BM97 旋转数组
一个数组A中存有 n 个整数,在不允许使用另外数组的前提下,将每个整数循环向右移 M( M >=0)个位置,即将A中的数据由(A0 A1 ……时间复杂度:O(n)O(n)O(n),三次reverse函数的复杂度都最坏为O(n)O(n)O(n)时间复杂度:O(n)O(n)O(n),三次reverse函数的复杂度都最坏为O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1),没有使用额外的辅助空间。空间复杂度:O(1)O(1)O(1),没有使用额外的辅助空间。输入:6,2,[1,2,3,4,5,6]...原创 2022-08-12 18:28:08 · 50 阅读 · 0 评论 -
冒泡排序 T=O(n^2),S=O(1)
j–) //从前向后比较,将最大的移动到最后面,后面逐渐有序,每趟比较n-1-i-1次。i < n - 1;i++) //n个数,需n-1趟冒泡。//j =n-1 从后向前比,最小值向前移。创建单链表,无头结点。创建单链表,有头结点。..............................原创 2022-08-13 17:37:51 · 34 阅读 · 0 评论 -
BM14 链表的奇偶重排
/双指针形成奇、偶链,最后在连接在一起//奇数指针//偶数指针//偶数链表头指针}}时间复杂度:O(n),遍历一次链表的所有节点空间复杂度:O(1),常数级指针,无额外辅助空间。原创 2022-08-14 11:10:31 · 35 阅读 · 0 评论 -
归并排序 (BM20 数组中的逆序对)
如果3 > 1, 显然3后面的所有数都是大于1, 这里为 4 > 1, 明白其中的奥秘了吧。左区间arr[0]及以后的元素都可以和右区间的arr[2]逆序对,即左区间和右区间的元素arr[2]可以构成(mid-i+1)个逆序对。那么逆序数为(4,1),(4,2),(3,1),(3,2),同样的如果区间变为有序,比如[3,4] 和 [1,2]的结果是一样的,也就是说区间有序和无序结果是一样的。当然,如果区间有序,比如[3,4] 和 [1,2]输入:[1,2,3,4,5,6,7,0]输入:[1,2,3]....原创 2022-08-15 14:15:36 · 71 阅读 · 0 评论 -
二叉树的遍历(前序、中序、后序、层次)
定义树的结构体。原创 2022-08-17 11:45:46 · 41 阅读 · 0 评论 -
BM28 二叉树的最大深度
step 1:对于每个节点,若是不为空才能累计一次深度,若是为空,返回深度为0.空间复杂度:O(n),最坏情况下,二叉树化为链表,递归栈深度最大为n;时间复杂度:O(n),其中nnn为二叉树的节点数,遍历整棵二叉树;时间复杂度:O(n),其中n为二叉树的节点数,遍历整棵二叉树;step 3:当前深度为两个子树深度较大值再加1。step 2:递归分别计算左子树与右子树的深度。空间复杂度:O(n),辅助队列的空间最坏为n;...原创 2022-08-17 15:02:42 · 50 阅读 · 0 评论 -
BM34 判断是不是二叉搜索树
给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树。二叉搜索树满足每个节点的左子树上的所有节点均严格小于当前节点且右子树上的所有节点均严格大于当前节点。思路:二叉搜索树,中序遍历是升序;只要当前结点值小于pre,就不是升序,就不是二叉搜索树;原创 2022-08-20 11:33:16 · 43 阅读 · 0 评论 -
HTTP状态码以及常见错误码403/404/500/502/504
301比较常用的场景是使用域名跳转。比如,我们访问 http:/www.baidu.com会跳转到htps:/hwww.baidu.com,发送请求;301状态码,然后返回一个location,提示新的地址,浏览器就会拿着这个新的地址去访问。注意:由于历史原因,用户代理可能会在重定向后的请求中把POST方法改为GET方法。如果不想这样,应该使用307301和308的区别?308状态码不允许浏览器将原本对POST的请求重定向到GET请求上。302用来做临时跳转比如未登陆的用户访问用户中心重定向到登录页面。..原创 2022-08-08 14:25:57 · 1736 阅读 · 0 评论 -
IPV4 IPV6
IPv4 IPV6原创 2022-08-02 11:28:26 · 1191 阅读 · 0 评论 -
str1、str2连接,分别用定长存储、堆存储、块链存储实现
串连接三种方式实现(定长、堆、块链)1 定长存储2 堆分配存储3 块链存储思路(1):两个子串先分成块,再连接思路(2)先连接,再分块存储字符串str1、str2连接,分别用定长存储、堆分配存储、块链存储实现,不能直接调用函数库中自带的连接函数。1 定长存储#include<iostream>using namespace std;#define MAXLEN 255//定义串的最大长度为255,<=255以内的任何串可用typedef struct { char ch[MA原创 2021-06-09 17:09:02 · 1356 阅读 · 0 评论 -
串的三种存储结构:定长存储、堆分配存储、块链存储
字符串str1、str2连接,分别用定长存储、堆存储、块链存储实现,不能直接调用函数库中自带的连接函数。字符串str1、str2连接,三种存储方式一、定长存储一、定长存储#include<iostream>using namespace std;#define MAXLEN 255typedef struct { char ch[MAXLEN + 1]; int length;}String;void StrAssign(String* Str, char str[]){原创 2021-06-09 17:01:25 · 13276 阅读 · 1 评论 -
LAN、WAN、WLAN、WIFI
LAN局域网 Local Area Network (缩写:LAN)局域网的覆盖范围一般是方圆几千米之内,其具备的安装便捷、成本节约、扩展方便等特点使其在各类办公室内运用广泛。局域网可以实现文件管理、应用软件共享、打印机共享等功能,在使用过程当中,通过维护局域网网络安全,能够有效地保护资料安全,保证局域网网络能够正常稳定的运行WAN广域网(英语:Wide Area Network,缩写为 WAN)又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖原创 2021-03-20 22:15:52 · 899 阅读 · 0 评论