自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 八股整理(计网,os)

服务端的资源分配是二次握手的时候分配的,客户端的资源是在三次握手分配的,因此服务器容易收到SYN洪泛攻击。SYN攻击就是CLient在短时间内伪造大量不存在的ip地址,并不断向server发送SYN包,Server回复确认包,并等client确认,由于ip地址不存在,此时server需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN包请求因为队列满而被丢弃,从而导致网络拥塞或者系统瘫痪。SYN攻击是一种电信的DoS/DDoS攻击。

2023-09-18 22:32:55 472

原创 剑指10-II动态规划:青蛙跳台阶 搜索和回溯算法 求1+2+...n 天秀

【代码】剑指10-II动态规划:青蛙跳台阶 搜索和回溯算法 求1+2+...n 天秀。

2023-08-01 20:04:24 360

原创 力扣468 验证IP地址

ipv4:1.子字符串为4个,2.子字符串不为空,子字符串的长度不能大于3(即数字在1-3个之间),子字符串不含前导零 3.子字符串的每个字符必须是数字,4.子字符串在0~255之间(先使用stoi()转为int)ipv6:1.子字符串为8个 2.子字符串的长度必须要在1-4之间(不能<1不能>5) 3.子字符串的字符必须在0-9,a-f,A-F之间。每段非空串得长度是否在1~4之间,且不含0-9,a-f,A-F之外得字符。ipv6地址:1.必须是八个非空子串。答案 但是内存消耗不容乐观。

2023-07-31 20:13:10 369

原创 动态规划 丑数(三指针 谁先创造谁先功德++)

3 都计算出了 6 这个结果, 所以在合并 3 个有序数组的过程中, 还需要跳过相同的结果, 这也就是为什么在比较的时候, 需要使用 3 个并列的 if…当比较到元素 6 时, if (dp[i] == dp[p2] * 2)…if (dp[i] == dp[p3] * 3)…nums2, nums3, nums5 中是存在重复的解的, 例如 nums2[2] == 3。2, 3, 5 这前 3 个丑数一定要乘以其它的丑数, 所得的结果才是新的丑数。先放暴力解法 反正超时 无法ac本题。

2023-07-30 14:52:24 180

原创 位运算 剑指offer15 二进制中1的个数 搜索算法:55-II 平衡二叉树 数值的整数次方 39数组中出现次数超过一半的数字

但是这个解法存在的问题是,输入一个负数,负数0x80000000右移一位的时候,并不是简单的把最高位的1移到第二位变成0x40000000,而是0xC00000000,因为移位前是一个负数,仍然要保证移位后是一个负数,因此移位后的最高位会设置为1,如果一直右移运算,那么最终这个数字就会变成0xFFFFFFFF而陷入死循环。首先n和1做位运算,判断倒数第一位是否为1,然后1右移变成2即10,做位运算,判断倒数第二位是否为1,接着2再右移一位变成4即100,判断倒数第三位是否为1.

2023-07-29 21:51:18 235

原创 分冶算法 剑指 07 重建二叉树 排序算法:剑指45 把数组排成最小的数 10-I 斐波那契数列

不同于map(map有find方法),vector本身是没有find这一方法,其find是依靠algorithm来实现的。2.关于在vector容器里根据找寻到的位置进行切片,前面为新的vector容器,后面为一个新的vector容器。另外返回类型并不是int 类型的索引 iterator迭代器类型的。1.vector容器里利用find()函数。这里并不是赋值操作,利用赋值是不对的。思路:重新定义排序方式。

2023-07-28 15:10:09 1230

原创 vector中emplace_back和push_back的区别

其中,第一个重载将 value 的副本作为左值插入 vector,而第二个重载则将 value 的右值插入 vector,可以用于移动语义。emplace_back可以避免创建元素的额外对象(调用该参数的构造函数来创建新元素),提高代码执行效率。2.直接vector分配空间进行对象构造,push_back栈上创建一个临时对象,在创建副本插入。因此,使用 emplace_back 可以减少创建不必要的临时对象,提高程序的效率。push_back,将该对象的副本插入vector的尾部。

2023-07-28 14:31:05 507

原创 剑指54二叉搜索树的第K大结点 55 二叉树的深度

采用迭代 队列写写看。

2023-07-26 21:04:08 127

原创 剑指offer12 矩阵中的路径 13 机器人的运动范围 34.二叉树中和为某一值得路径

0,0能走到0,1和1,0,那对于0,1和1,0两个点来说,就是判断他们的上面i-1和左边j-1是否可以走,如果可以那就可以从左边和上面分别走过来,能走到当前这个点就置为1,然后左边和上面能走的点都走了之后,还有两个方向没有判断 ,再来判断能不能从右边(i+1)走到左边,下面(i+1)走到上面,如果能走到当前点,就置为1,最后有多少个1,就有多少个机器人能走的格子。//写的有点问题,暂时想不到怎么改,先放着,通过用例71/83 卡住的是abcd 但是改了又有问题。不需要当前遍历到哪一层,BFS模板。

2023-07-26 17:07:39 1446

原创 关于新手学习Ubuntu使用vim,如何使用c/cpp的编译器以及如何使用makefile的详细记录

ubuntu下。

2023-07-23 22:30:09 1086

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

【代码】力扣19 删除链表的第N个结点。

2023-07-23 21:35:59 174

原创 剑指27 二叉树的镜像 28.对称的二叉树 26.树的子结构

基于上面的基础,我看看对称后的树是不是和当前树一样。

2023-07-22 22:14:38 63

原创 力扣256.翻转二叉树(递归/qBFS) 剑指offer 32 从上到下打印二叉树(q BFS)I II III(三道题)

q.empty())判断条件不对,更改成q.size()比如9,20在队列里,此时队列的size为2,那么只做两次,9一次,9没有孩子,20一次,20有孩子,当前走出循环,插入一维数组,存在的问题即第二个问题 我怎么知道当前层是否遍历结束?第一个需要考虑的问题是 二维数组怎样在不知道行和列的情况下进行插入 :先定义一维数组,然后将一维数组插入二维数组!第二个需要考虑的问题是 BFS中队列进行遍历每一层的时候既需要把当前结点的左右孩子结点存到队列里,同时当前层结束后。原来的思路BFS队列。

2023-07-22 20:28:36 258

原创 剑指offer 04.二维数组的查找 11.旋转数组中的最小数字 50 只出现一次的字符

这样,target>当前的数,说明当前的数还不够大,往下走row++,如果targe<当前的数,说明当前的数大了,要小一点,col–,直到找到一个相等。刚开始的思路是:从一个开始,如果target当前的大,就…发现有两条路可以走,往右走比他大,往下走也比他大,到底走两条,当然可以暴力遍历从当前row,col后的矩阵,也算是暴力。哈希表,存储对应元素的次数,那么再计算对应元素的次数是不是等于1的时候,是不能用mp.count(s[j]),而是用map[s[i]]自然存储对应的字数。

2023-07-20 21:53:55 151

原创 MySQL八股文!

如果SQL语句中用到了组合索引的最左边的索引,那么这条SQL语句就可以利用这个组合索引去进行匹配。当遇到范围查询(>,<,between,like) 就会停止匹配,后面的字段不会用到索引。对(a,b,c)建立索引,查询条件a/ab/abc会走索引,使用bc不会走索引对(a,b,c,d)建立索引,查询条件为a=1 and b=2 and c>3 and d=4,那么a,b,c三个字段可以用索引,而d无法使用索引,因为用到了反胃查询。

2023-07-20 20:01:44 128

原创 剑指29.顺时针打印矩阵 31 栈的压入,弹出序列 03 数组中的重复数字 53缺失的数字 04二维数组中的查找

思路:pushed数组里遍历进栈,遍历时候,先进栈,再判断栈顶是否和poped序列的当前指向的是否一样,一样就pop,直到不一样为止,然后继续遍历进栈。然后再判断栈里面剩余的和poped序列指向的一不一样,一样,就把栈里面的pop,直到栈为空,只要有一个不一样,就return 0,最后栈为空,poped序列也遍历完了,flag=1.这题用的哈希集合,想着一会就写出来了,但是,算了先贴出脑残代码,尼玛哈希集合的count值只能是找不到(0),找得到(1),没有其他的取值!我说怎么给我return 0呢!

2023-07-18 21:06:46 1298

原创 剑指offer09.用两个栈实现队列 30.包含min函数的栈(两个栈)59-I 滑动窗口的最大值(优先队列大顶堆) 59-II 队列的最大值(队列+头指针尾指针)

pop的话,都要pop正常栈的栈顶,但辅助站需不需要pop就要看正常栈和辅助栈的栈顶元素是否相同,如果相同,辅助栈也要pop,不然我正常栈-3已经pop了,辅助栈不pop,那么找min,还是return的辅助栈的-3.但栈底无法直接返回,因为要一个一个放到stk2里,这样stack2的top()就是stk1的栈底,然后再把stk1的元素从stk2一个一个再放回stk1。1.push的话,正常栈就直接push,对于辅助栈,如果栈空或者当前push的x比栈顶元素小,push进辅助栈。

2023-07-16 16:29:48 170

原创 c++优先队列(priority_queue)小顶堆 大顶堆

include <queue> # include <functional> //greater<> //定义 priority<Type,Container,Funstional>可缺省后面那个参数,第二个为保存数据的容器,第三个为元素比较的方式 priority_queue < int > pq;//缺省,默认容器vector,比较方式operator<,即大顶堆,队头元素最大 priority_queue < string > q;

2023-07-16 14:55:38 839

原创 c++种关联容器set和unordered_set的区别和作用+hashmap的底层实现原理

作用:1.,都是关联式容器,和map哈希表容器不同,2.使用set存储键值对的时候,只需要为其提供各键值对中的value值(也就是key的值)3.存储的各个元素的值必须各不相同4.语法上,set容器没有强制对存储元素的类型做const修饰,即set容器中存储的元素的值可以修改,但是,c++标准为了防止修改容器中元素的值,对此操作做了限制,因此用户无法修改元素值。

2023-07-15 20:02:47 584

原创 剑指offer21.调整数组顺序使得奇数位于偶数前面 57.和为s的两个数字 58.反转单词顺序

优化哈希表(记住 这是一个排过序的 所以找到后面大的 大的对应的target-x一定是前面已经存储在哈希容器里的。(其实和没优化的差距不大哈哈哈哈)我想的是先把当前数组放到哈希表里,然后再遍历当前数组的时候,在哈希集合里找有没有和他配对的,有就放进result里面。无语 写了个哈希集合 然后就大无语,耗时耗空间。方法2:双指针 和三数之和很像,只是不用去重。暴力二次遍历(时间复杂度空间复杂度都是n)方法2:双指针,一次遍历,原地修改。调用stringstream。这是不定义长度的写法。

2023-07-15 19:46:35 238

原创 剑指18.删除链表的节点(双指针 前后指)22.链表中倒数第k个结点(迭代/双指针(快慢间隔k个指针) 25.合并两个排序的链表(迭代给新链表) 52.两个链表的第一个公共结点(哈希集合,双指针)

prev指针指向head头,cur当前指针指向head->next,因为底下要迭代判断cur的val值,所以会略过head,所以先判断head的val是不是等于val,等于直接return head->next,不等于就开始判断cur的val是不是等于val,等于就prev->next=cur->next 然后prev和cur都往后移。方法2:快慢指针,快指针比满指针先走k步 然后慢指针再和快指针走,等到快指针走到最后的时候,满指针就到达了倒数第k个结点。方法1,哈希集合(时间,空间复杂度都为n)

2023-07-15 14:53:17 47

原创 链表:剑指offer06 从尾到头打印链表(遍历+reverse) 24 反转链表 35 复杂链表的复制(哈希表<原链表节点,新链表节点>)

思路没问题 利用栈 先进后出 问题出在new一个新链表装栈里面pop出来的结点得时候!newcur->next首先要置为NULL,虽然会用newcur->next有指向,指向栈里面新pop出来的结点,但是但是最后一个很危险,栈里最后一个pop出来的时候,它得newcur->next要为NULL。本来是1->2->3->4->5->NULL NULL<-1<-2<-3<-4<-5 也就是5 4 3 2 1 NULL。//方法1 给到一个反转数组 然后一个一个给到新链表。//方法2 利用栈 先进后出。

2023-07-15 13:03:07 36

原创 剑指 Offer 05. 替换空格 58 左旋转字符串(暴力/局部翻转+整体翻转) 20.表示字符的字符串(有限自动机,建议java) 67.把字符串转换成整数(利用ASCII-’0‘)

思路不难,先解决掉当前字符串前面所有的空格,然后找到去除空格后的第一个字符,如果是整数++,如果是负数,temp=0(最后结果加个负号),然后接下来,只要当前字符串的asii码在。),就得到当前number,然后i++,一旦result超过pow(2,31)return INT_MAX,如果result小于-pow(2,31),返回INT_MAX。不额外申请空间的做法,局部翻转,整体翻转 时间复杂度o(N),本质还是遍历了,空间复杂度o(1),不申请额外空间。暴力解法 空间复杂度随时间复杂度为o(N)

2023-07-14 16:38:35 37

原创 力扣c++463岛屿的周长(暴力解法)

当然如果是边界格子,如果行等于第一行,周长+1,行等于最后一行,周长+1,列等于第一列,周长+1,列等于最后一列,周长+1;遍历所有的格子,如果当前格子为1,判断上下左右,其中只要有一个等于0,周长+1,这是中间格子的情况。这题比较好想思路,属于十分钟手撕完毕,注意边界的判断。

2023-07-11 20:59:23 71

原创 力扣c++ 5.最长回文子串(单双中心搜索)

主要思想是循环遍历一遍字符,以该字符为中心(单中心),以该字符和该字符隔壁为中心,进行单双搜索,找到最长的max长度,记下i所在位置,然后利用substr,注意substr里面起始位置可不是i,而是i-(max-1)/2这个起始位置,为什么要max-1,因为如果是双中心,eedbbdee,max_left=i=3,max=8,起始位置应该是3-(8-1)/2=0,而不是3-4=-另外在search函数里,注意条件要取等 left可以取等0.’循环优化条件可以优化至s.size()-max/2。

2023-07-10 22:05:00 47

原创 力扣 c++ 50 pow(x,n)(分冶+递归)

看这道题,以为很简单,重复乘以x,n<0,就1/result,再加上对一些特殊情况的判定,例如x=0,1,n=0,1。但是可恶啊超时,有一个用例特别大,x=2,n=负的一个巨大的数,结果应该为0。

2023-07-09 21:44:11 94

原创 136 leetcode 只出现一次的数字(哈希表/异或运算) 11.盛最多水的容器(贪心算法) 146LRU缓存(哈希链表+双头链表)

这题第一反应就哈希表暴力求解 ,哈希表啊要用【】not() mp[nums[i]] notmp(nums[i])真是猪脑袋来的但是写的很快,两分钟手撕官网给出的答案 异或运算代码。

2023-07-07 22:28:41 32

原创 计算机网络 网络原理 (第四章 网络层 第五章 传输层 第六层 应用层)

网际协议IP提供的服务:无连接和面向连接。插一嘴,数据链路层的PPP协议是面向字节的,因此帧必须是整数字节(64~1508长度)与ip协议配套使用的还有三个协议:地址解析协议ARP 网际控制报文协议ICMP 网际组管理协议IGMPA类地址 net-id 1字节 host-id 3字节B类地址 net-id 2字节 host-id 2字节C类地址 net-id 3字节 host-id 1字节数据链路层和物理层使用硬件地址(物理地址)

2023-07-07 18:41:45 109

原创 c++ 1.引用和指针的区别 2.const和static的区别 define 宏定义和extern关键词 3.内存4区 4.虚函数 5.c++设计模式

指针可以为空,为null,为空指针,野指针,但引用不可以为空,必须指向某个变量:指针存储的是对应的地址,4字节(32位系统下),8字节(64位系统),引用是根据引用数据本身的大小决定**指向操作:**指针可以改变指向,引用不可以改变指向,对引用操作相当于对本身进行操作:引用比指针更安全,引用不可改变指向,虽然const+指针也无法改变指向,但是仍可以为NULL指针,野指针,由于多块指针可以指向同一块内存,当free掉其中一个指针的时候,其中指针就成了野指针。

2023-07-06 15:33:36 72

原创 15 三数之和(双指针+三下标的去重)

暴力解法//记一下这个写法 ()里还有一对{}写法没问题,就是复杂度太高了,直接超出时间限制,可恶啊,菜鸡继续留下眼泪。

2023-07-05 16:24:23 28

原创 计算机网络 网络原理(第一章概述 第二章物理层 第三层 数据链路层)

c/s软件的特点:c客户软件属于发起通信(必须知道服务器程序的地址)(视频播放,qq),s服务器软件属于被动等待来自各地的客户通信请求(不需知道客户程序的地址)(IIS服务程序)p2p:对等连接,不区分哪一个是服务请求方或提供方,本质仍然是使用对等连接,但是对等连接的每一个主机即是客服or服务器路由器:分组交换,处理分组的过程:1.收到分组,放入缓存 2。查找转发表,找到目的地址应从那个端口转发 3.把分组送到适当的端口转发出去。主机和路由器:主机发送分组,接收分组。

2023-07-04 16:49:05 67

原创 leetcode 144二叉树的前序遍历 145 二叉树的后序遍历 c++ (递归+迭代)

【代码】leetcode 144二叉树的前序遍历 145 二叉树的后序遍历 c++ (递归+迭代)

2023-07-04 13:23:51 35

原创 CVPR2022 图像修复 Incremental Transformer Structure Enhanced Image Inpainting with Masking Positional En

动机:1.CNNs的感受野受限,丢失纹理结构信息2.缺少整体结构信息3.基于注意力的计算量过大4.在masd区域没有位置信息解决方法:(利用一个额外的结构restorer恢复器来增量恢复图像)方案:1.在低分辨率空间,使用transformer恢复整体图像结构信息2.使用FourierCNN恢复图像纹理信息3.使用掩码位置编码策略提高使用较大mask区域的情况的性能4.增量策略:就是和预训练好的模型出来的结果进行残差,预训练好的模型提供辅助信息。

2023-07-03 19:04:11 373

原创 94.leetcode 二叉树的中序遍历 (dfs算法)递归和迭代

新建一个int数组 vector result用来 push_back 值。

2023-07-01 22:10:04 38

原创 leetcode3 .无重复字符的最长子串(滑动窗口+哈希表)

思想核心是:记录字母出现的次数,遍历字符串s,遍历到当前字符,当前字符的次数加1,只要当前s[i]的次数超过1次,当前left指向的字符的次数-1,left++,直到当前这个字符次数=1,也就是left一直要移动到重复的字符上为止,比如“pwkekjw"力扣废材来了 让一让 真的是力扣废物中的废物。去看了一下哈希表的解法。

2023-07-01 20:19:00 31

原创 69 c++ letcode 求x的平方根 (二分查找) 70 爬楼梯 (动态规划)509.斐波那契数(动态规划)

暴力解法二分查找法。

2023-06-30 12:53:49 70 1

原创 2.两数相加 中等 链表题c++ 会存在野指针的问题

【代码】2.两数相加 中等 链表题c++ 会存在野指针的问题。

2023-06-29 19:17:24 39

原创 64.二进制加和 python 和 c++解法 (搁置未完成)

二进制 a 和 b分别通过int(a,2),int(b,2)转为十进制。然后相加后的结果通过{0:b}.format©将c转为二进制。python的写法好简略。

2023-06-29 17:25:00 43

原创 66.力扣 leetcode 加一 容易发生数组越界的问题

不对 下标应该有-1的情况 比如只有数组里只有一个数字9 发生进位 len-1发生下标违规了。太天真了,以为很简单的一道题目,卡了我很久,后来一度发生了数组越界问题没被我检查出来。就这吧,总结,如果原来数组数量为n,超过n之后再操作就是数组越界问题,希望谨记。

2023-06-28 11:13:16 206 1

原创 leetcode c++27 移除元素 35 搜索插入位置 58.最后一个单词的长度

这题思路也非常清晰public :} };find_last_of()找到最后一个空格的位置,如果这个空格的位置在这个句子的最后,那就利用substr(0,pos)扔掉空格,截取空格(pos)之前的字符串,直到(while)这个空格的位置不在句子的最后一个,说明最后一个就是单词了,那找到的pos后就应该是最后一个单词了,迅速substr(pos+1,s.size()),区间左闭又开,也就是可以取到pos+1对应的位置的值,但不能取到s.size()对应的值。

2023-06-27 22:20:09 37 1

CVPR2021 Local Attribution Maps LAM工具用于检测像素的利用率,测试可运行

CVPR2021 Local Attribution Maps LAM工具用于检测像素的利用率,测试可运行,Demo package for colab tutorial,修改一下测试路径,还有tensor.py里一个numpy改成detach.numpy()(报错就改)

2023-07-09

空空如也

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

TA关注的人

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