- 博客(25)
- 资源 (9)
- 收藏
- 关注
原创 leetcode-哈希篇1
不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。唯一需要注意的是,需要先复制所有节点本身,再复制随机节点,不然直接复制随机节点,随机节点还没被创建。数组中有四个 1-diff 数对, (1, 2), (2, 3), (3, 4) 和 (4, 5)。指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。思路:使用两个map,你映射我,我映射你,证明我们两是一样的,负责就不是。节点组成,其中每个新节点的值都设为其对应的原节点的值。
2024-10-08 03:10:55
863
原创 leetcode-链表篇4
链表来代表两个非负整数。将这两数相加会返回一个新的链表。新链表是通过拼接给定的两个链表的所有节点组成的。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。你可以假设除了数字 0 之外,这两个数字都不会以零开头。请你将所有链表合并到一个升序链表中,返回合并后的链表。的链表,表示两个非负的整数。请你将两个数相加,并以相同形式返回一个表示和的链表。给你一个链表数组,每个链表都已经按升序排列。思路:和两个链表相加差不多,都是遍历就可以。将它们合并到一个有序链表中得到。将两个升序链表合并为一个新的。
2024-09-30 00:27:56
1094
原创 leetcode-链表篇3
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。思路:看图片可以发现,这个题目本质上,是把链表分成两部分,交换前后两部分的顺序。加上前缀节点pre,找到要翻转的区间的头尾节点,将之翻转后。pre就是已经处理好的部分的尾节点, curr就是你要处理的部分的头节点。这题和上一题的唯一不同就在于,需要遍历一遍算出链表的长度,避免越界。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。,请你反转链表,并返回反转后的链表。
2024-09-29 01:08:53
783
原创 leetcode-链表篇2
这个子指针可能指向一个单独的双向链表,也包含这些特殊的节点。这些子列表可以有一个或多个自己的子列表,以此类推,以生成如下面的示例所示的。思路:发现没有,这题目其实跟上面一样的,就把这个特殊链表看作是树,child和next分别看成left和right,做法和上面这题完全一样的。为了将每一级都序列化到一起,我们需要每一级中添加值为 null 的元素,以表示没有节点连接到上一级的上级节点。你会得到一个双链表,其中包含的节点有一个下一个指针、一个前一个指针和一个额外的。是一个带有子列表的节点。
2024-09-27 23:43:01
759
原创 leetcode-链表篇
思路:使用listnode实现这个链表类,记得addindex时,边界情况可以使用addhead和addtail节省很多操作。// 链表变为 1->2->3。// 现在,链表变为 1->3。思路:快慢指针,快指针走到末尾,说明慢指针就走到了要删除的节点。以指示链表中的上一个节点。你可以选择使用单链表或者双链表,设计并实现自己的链表。删除原始链表中所有重复数字的节点,只留下不同的数字。是指向下一个节点的指针/引用。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。,请你删除链表中所有满足。
2024-09-26 23:38:14
658
原创 leetcode-数组篇7
这一题目中,我们每个节点保存该位置及左上方所有数的和,这样右下角的点减去其他几个点,就得到了四个点围成的区域的和。思路:刚才题目的升级版(当然也可以用上一题的方法做,不过这样get不到该题目的核心)思路:题目很简单,一看就是前缀和的题目,类似的题目还有leetcode560等题目。思路:这个题目很有意思,做过的人一眼就知道怎么做了,没做过的可能要想半天。其实就是从左往右,记录每个数左边的乘积,再从右往左,记录每个数右边的乘积。PS:类似的题目还有leetcode上的分糖果等题目,需要左右各遍历一遍。
2024-09-25 23:20:08
710
1
原创 leetcode-数组篇6
做多了,做这种题心里就有数了,你会下意识想到,旋转句子、将数组向右移动k个步长等题。思路:因为这题之前做过,所以也是一眼秒了,将第一行第一列作为状态组,存储整个矩阵行列的置零情况,那么第一行第一列本身的置零情况呢?下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。后来发现不能这样,活细胞不能当场处死,死细胞不能当场复活,不然会影响周围细胞的状态。个格子的面板,每一个格子都可以看成是一个细胞。否则,输出原始矩阵。,分别表示想要的重构的矩阵的行数和列数。
2024-09-24 23:26:17
722
原创 leetcode-数组篇5:数组的遍历
思路:模拟向上对角线和向下对角线的遍历,同时在在遍历完之后,看下下一个坐标点怎么重置。思路:使用四个index:left、right、up、down控制遍历的边界和方向。,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。所有元素,且元素按顺时针顺序螺旋排列的。,返回矩阵中的所有元素。思路:代码几乎和上一题一致。
2024-09-23 22:43:35
411
原创 百分百冲击shared_ptr
所有写C++的程序员,都逃不过内存泄露。关于如何定位内存泄露,前面我们讲过valgrind及其他工具关于如何把避免内存泄露,我们可以使用shared_ptr。
2024-09-22 23:26:40
408
原创 leetcode刷题笔记-数组篇4
思路,可以用上一题的做法做,但是有空间冗余,因为前后依赖关系,我们只需要前一个数组就行。利用向后往前推得策略,我们可以复用同一个。两个舰队之间至少有一个水平或垂直的空格分隔 (即没有相邻的舰队)。思路:某个格子是战舰的话,判断它的左边和右边是否为战舰,不是的话它就是一个战队。在「杨辉三角」中,每个数是它左上方和右上方的数的和。在「杨辉三角」中,每个数是它左上方和右上方的数的和。表示棋盘,其中,每个单元格可以是一艘战舰。生成「杨辉三角」的前 numRows。,返回「杨辉三角」的第。列)的形状放置,其中。
2024-09-22 22:56:09
469
原创 leetcode打卡-数组篇3
3.看了官方题解,使用源数组当map,给每个数对应的索引位置加上n,最终如果某个位置上的数小于n,那么该位置对应的数就是缺失的。2.仍然使用类似第一个缺失的正整数的思想,将每个数放到该放的位置上,其他的位置就是缺失的位置。- 第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。3.使用abc来表示第一大,第二大,第三大的三个数,在遍历过程中,维护这三个数、- 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。
2024-09-21 23:54:58
923
1
原创 leetcode数组-2
思路:可以用map做 ,但是没必要,使用最小缺失正数的思路, 原地置换,最终不在自己的位置上的揪出来就好了。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合。所以 F(0), F(1), F(2), F(3) 中的最大值是 F(3) = 26。输入数组的度是 2 ,因为元素 1 和 2 的出现频数最大,均为 2。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。所以 [2,2,3,1,4,2] 是最短子数组,因此返回 6。
2024-09-20 23:19:28
566
原创 数组篇-数组的改变、移动
题目没有说的是,你可以给n-1个数+1,那你其实也可以给1个数-1啊,效果一样的(我也是看的高赞才知道还有这种操作)1.curr前面只有last一个数,OK,那么这个时候怎么变呢,让curr变大还是让last变小,想想最小损失原则,必然是让last变小,因为curr变大的话,很可能会影响之后的非递减属性。2.curr前面不只一个数,curr的改变不仅要照顾last,还得考虑下last的前一个数old。一种更高级的解法是使用类似:找到最小缺失的正整数和找到链表的环的类似的解法去解,但是我还没学会。
2024-09-19 22:26:31
1014
1
原创 MySQL实战45讲笔记(一)
1.MySQL语句的一生:(1)使用MySQL,首先要干什么呢,当然是建立连接,命令:mysql -h ip -u user -p password -P port然后后台验证你密码账号都合适,且有权限就会让你登陆进去了。(这谁干的事情,连接器!)这里有一个问题,若你登录进去之后,管理员取消了你的权限你会掉线吗?答案是不会,当你退出再次连接之后管理员对你的权限操作才会生效。这里...
2019-12-25 16:37:05
268
原创 web服务器开发
#http_conn.h //负责状态码,读写缓存区等的定义声明。#ifndef HTTPCONNECTION_H_#define HTTPCONNECTION_H_#include<unistd.h>#include<iostream>#include<sys/types.h>#include<fcntl.h>#includ...
2019-06-06 20:39:56
777
原创 Reactor模式,Proactor模式,半同步/半异步模式
一:Reactor是这样一种模式:它要求主线程监听文件描述符上是否有事件发生,有的话交由工作线程处理,读写数据,工作连接请求等都交由工作线程完成,主线程不再参与。(以epoll为例)1.主线程向epoll内核事件表中注册socket上的读就绪事件2.主线程使用epoll_wait等待socket上是否有数据可读3.有事件可读时epoll_wait通知主线程,主线程将之放入请求队列4...
2019-04-22 21:20:37
1086
原创 多线程详解
当进程为执行任务而多次切换时,必然会产生额外的开销。这时引入一个更小的单位——线程。一个进程里面有多个线程,这些线程也可能会服务于其他进程。例如酷狗播放器的声音处理线程,与爱奇艺的声音处理线程可能为同一线程。线程共享进程的所有信息。线程共享的进程环境包括:进程代码段 进程的公有资源(如全局变量,利用这些共享的数据,线程很容易的实现相互之间的通信) 进程打开的文件描述符 消...
2019-04-19 11:14:02
262
原创 网络I/O模型
本文参考于analogous_love大神的linux网络专栏,以及徐晓鑫女士的《后台开发》一书,十分感谢两位。网络I/O模型,在unp中,斯蒂夫先生将它归为五种:(1)阻塞式I/O(2)非阻塞式I/O(3)多路复用式I/O(4)信号驱动式I/O(5)异步I/O而在徐晓鑫女士的《后台开发》一书中,并没有提及信号驱动式。其中阻塞式是入门级的,就不多讲述了。(2)...
2019-04-17 19:25:27
165
原创 do...while(0)的妙用
总是听闻do...while(0)有妙用,但一直不曾去了解,今日得缘偶见,其可替代功能复杂的宏。effective c++的第一个条例就是用enum,const,union等代替define,为什么define如此令人闻之色变呢?#define f(x,y) x*y的原意是简化调用,当x,y是数字或变量时无碍,但当其是表达式时则相去甚远。例如: f(3,5),这是=符合我们初衷,但若f...
2019-04-17 16:37:09
137
原创 c++小记
1.二维数组的传参问题:(1):在形参中指明第二维维数; 例:void set(int a[][3])(2):一维数组指针作为形参; 例:void set(int (*a)[3])(3):二重指针传参; 例:set (&a);void set(int (*a)[10][10])2.指针引用:*p=10;*&q=p;3...
2019-04-16 09:55:01
191
原创 九宫格
写了一个利用穷举求九宫格的算法,本来是要求三横三竖两对角线,共计八线和都要满足15,但是在if语句之前我们就可以判断除四周之外的其他和,大大的减少其遍历次数。#include<iostream>using namespace std;int check(int a[10]){ if(15!=(a[1]+a[2]+a[3])||15!=(a[1]+a[4]+a[7])||1...
2019-04-16 09:30:34
492
原创 大小端定义及判断
大端,小端又名网络字节序,主机字节序。高位高存,低位低存是小端,复合人们的视觉体验,不用改变位置,如0x0102,在内存的存储位置也是 01 02。而大段相反,复合逻辑,为02 01。如今网络传输,keli5c等使用大端,x86系列使用小段。unp中有一个程序用来判断大小端://endian_check.cpp#include<iostream>using namespa...
2019-04-14 20:46:08
368
原创 “粘包”问题的起因与解决
本文参考于:徐晓鑫女士的《后台开发》(1)因为nagle算法。什么是nagle算法,简而言之是为了避免浪费资源,将包合并发送的算法。就好比你一个人打车必然不划算,可以约几个和你一道的人一起打车,宾主尽欢。但是随之而来的问题是,因为一起发送,故接收方不知道一个包的骑士==起始和截止位置。(2)因为我们网络编程时,其实是将接受到的数据置入缓冲区,待应用层读取,但若应用层阻塞于其他事情而归期未至...
2019-04-14 20:37:12
938
原创 分治算法
/* 2^N个队伍比赛,每支队伍与其他队伍比赛一次, 每天比赛一场,比赛2^N-1天*/当N=0时,结果为1;当N=1时,结果为1 2 2 1;当N=2时,结果为 1 2 3 4 2 1 4 3 ...
2018-04-19 18:18:19
221
原创 位优化快速幂
已知X和N的值,求X^N的值。第一种方法,直接调用pow函数:double a:a=pow(X,N);第二种方法,写个循环:int a,b=1;for(int a=1;a<=N;a++) b*=X;第三种方法,位优化;example:求a^156。 156化为二进制就是10011100;而a^156=a^4*a^8*a^16*a^128;是不是恰与156...
2018-04-19 16:43:23
182
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人