- 博客(38)
- 收藏
- 关注
原创 计算机网络之应用层
1.应用层原理1.1网络应用程序体系结构1)客户-服务器体系结构2)p2p结构(对等)1.2进程通信1)进程成对通信一个为客户方,一个为服务器方2)进程从应用层到传输层发送接受报文时使用了一个套接字(socket)的接口3)套接字可编程又被称为应用程序编程接口(api)4)进程寻址通过主机地址(ip)和进程标识符(端口)实现1.3运输服务1)可靠数据传输2)吞吐量3)定时4)安全性1.4两种运输层协议1.4.1tcp1)面向连接服务(握手)
2022-11-02 22:41:45
437
原创 01背包问题(动态规划)
有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。,求解将哪些物品装入背包里物品价值总和最大。
2022-10-27 22:34:09
320
原创 wireshark找不到本地接口的问题
查资料说使用那天net start npf 命令(cmd管理员运行)我的办法是安装npcap我使用1.6可以直接在联想应用商店下。当我刚去安装wireshark时发现根本找不到本地接口如图。
2022-10-14 14:45:25
1614
原创 [leetcode]47.全排列2
使用一个布尔型的数组进行判断,初始化为假,当被选取时改为真,回溯操作时回溯为假。这道题的思路是通过回溯算法暴力搜索除所有答案,重点应该在于去重,这道题有两种去重维度。使用一个hash表,来存储一层中该数字是否出现过,并进行判断。1)同一颗树枝上已经被选取的不能再选取。2)同一层上已经被选取的不能再选取。给定一个可包含重复数字的序列。返回所有不重复的全排列。将这道题类比成一棵树来看。(图片来源代码随想录)
2022-10-10 19:38:21
191
原创 [leetcode]450.删除二叉树搜索树的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。
2022-10-02 20:05:21
853
1
原创 [leetcode]236.二叉树的最近公共祖先
可以用递归的思路来判断,1当一个节点左右两个子树中存在p 和q,2节点本身是p或q,他的左右两个子树存在p或q。分析这个问题有两个点如何判断公共祖先和如何找到最近的公共祖先。使用后序遍历从叶节点往上遍历,就能找到最近的。
2022-10-02 13:07:47
193
原创 [leetcode]501.二叉搜索树的众数
用两个数第一个存放众数的次数,第二个存放每一个数出现的次数,两遍遍历,第一遍求出众数出现的次数,第二次找出出现次数和众数一样的数放在数组里返回。我觉得重点在如何用有序数组求出众数因为众数可能是多个。另外注意当众数的次数为一时需要另外考虑,因为循环不全。利用中序遍历得到有序数组,再在数组中求众数。
2022-10-01 21:46:56
663
2
原创 二叉树之根据中序后序构建一颗二叉树
整体的思路是切割数组,后序遍历最后一个肯定是整个树的中节点,在中序数组中找到这个数,切割数组,切割为左中序数组和右中序数组,再根据切割出来的中序数组的大小来切割后序数组,递归的处理左子树,右子树。这道题写完了可以尝试下105,一样的套路。
2022-09-25 15:53:51
348
6
原创 二叉树的层序遍历
层序遍历借用队列的数据结构实现,先进先出,依次放入每一层从左至右的节点,再依次出去,即可完成遍历。(即逐层地,从左到右访问所有节点)。
2022-09-16 19:52:47
172
原创 数据结构之二叉树的遍历---递归和迭代
先将中节点入栈,取栈顶元素放入结果数组内,再进行出栈操作,再依次将右节点左节点入栈,只要栈内数据不为空便循环此操作,直到完成遍历。先序遍历 ->(处理左右入栈顺序)中右左->(反转result数组)后序遍历(左右中)后序迭代遍历需要将先序稍微修改便可达到后序遍历的效果。二叉树天然符合递归,因此二叉树的递归算法特别简单。中序遍历和后序遍历仅仅需要改变单层递归的逻辑。在写递归算法时应该分为系统的三步走。144.二叉树的前序遍历。145.二叉树的后续遍历。94.二叉树的中序遍历。leetcode题目。
2022-09-16 12:13:01
449
1
原创 数据结构之链表常见题型(下)
新链表是通过拼接给定的两个链表的所有节点组成的。如果有两个中间结点,则返回第二个中间结点。的非空单链表,返回链表的中间结点。给你一个链表,删除链表的倒数第。将两个升序链表合并为一个新的。个结点,并且返回链表的头结点。
2022-09-07 08:41:26
233
原创 解决链表常见题型(上)
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true。像这样本该是尾节点的地方又连接到了链表中的一个节点就形成环形链表。给你一个链表的头节点 head ,判断链表中是否有环。,请你反转链表,并返回反转后的链表。,请你删除链表中所有满足。给定一个已排序的链表的头。1)判断链表是否存在环。给你一个链表的头节点。
2022-09-06 10:24:13
264
原创 力扣刷题之383赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。遍历第一数组,所得出哈希值存储的数均--,当出现小于0的数时代表第一数组出现了额外于第二数组的数,返回false。链接:https://leetcode.cn/problems/ransom-note。哈希函数是 将对应字符减去个'a',转换为整数,这个整数就是他映射出的哈希值。遍历第二个字符串使用临时数组将对应哈希值存储的数都++为1。否则返回 false。
2022-09-01 22:18:58
262
原创 排序算法总结
4)当我们需要在巨大的数据面前进行选出最大或最小的几个数据的时候(如TopK问题),运用堆排序将大大降低时间成本比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。1)当数据元素规模比较小时使用选择排序或者插入排序。稳定:冒泡排序,插入排序,归并排序,基数排序。不稳定:希尔排序,快速排序,堆排序,选择排序。5)只考虑时间成本不考虑空间成本时用归并排序。希尔排序,归并排序,快速排序,堆排序。冒泡排序,选择排序,插入排序。桶排序,基数排序,表排序。3)数据规模较大快速排序。
2022-08-25 14:07:14
746
原创 经典排序算法之表排序
与其他排序方法不同表排序并非是一种具体排序方法,而是一种排序思想,当排序的对象本身的移动时间不可忽略时(例如排序对象是非常庞大的结构体),此时就应该应用表排序,构造一个指针数组来指向每个元素(这个数组也被称之为表),当需要排序时交换表中的指针。大大节省了时间成本。
2022-08-25 11:29:20
377
原创 经典排序算法之快速排序
快速排序也是基于“分而治之”思想的排序算法,在排序时首先选定一个主元,使主元左边的都小于主元,主元右边的都大于主元,通过主元再分成两个子数组,在两个子数组上进行递归,最终就排好序了。
2022-08-24 23:57:58
238
原创 经典排序算法之希尔排序
当插入排序处理较小规模的数据和比较有序的数据时时间复杂度一般很低,在插入排序前进行一定的有序化,并且减少插入数据的规模就可以提高插入算法的效率,这就是希尔排序。
2022-08-23 11:36:59
84
原创 经典排序算法之插入排序
插入排序是将一个数组分为已排序和未排序,将未排序的元素依次取出,并和已排序数组挨个比较,寻找到合适位置后插入如存在一个数组arr[4]{4,3,2,1}在进行插入排序时,将4看为已排序的,3,2,1看为未排序,先取出3和4比较放在4前面,此时3,4为已排序的2,1为未排序的。
2022-08-22 22:16:00
108
原创 经典排序算法之冒泡排序
冒泡排序就是通过不断比较相邻的两个元素的大小,并交换位置来达到排序目的比如现有一个数组arr[4]{4,3,2,1}想要递增排序就得先比较4和3,4比3大交换位置,同理比较剩下的两次。这是第一趟,将最大数4排在最后面,当有n个元素时只需要n-1趟,当前面n-1个元素排好位置时最后一个肯定是正确位置。
2022-08-22 20:41:56
316
原创 数据结构与算法之求最大子列和问题
给定有n个整数(可能为负整数)组成的序列a1,a2,…,an,求该序列连续的子段和的最大值。如果该子段的所有元素和是负整数时定义其最大子段和为0。时间复杂度:O(n^2)(较为复杂)时间复杂度:O(nlogn)较为简单。时间复杂度:O(n^3);时间复杂度:O(n);......
2022-08-17 20:22:32
1427
1
原创 QT中设置exe图标
在项目路径下创建个txt文档改后缀名为rc即可。此时执行cmake便可以看到rc文件。我这里创建 logo.rc。这一步不去做的话会报错如图。用记事本打开rc文件。
2022-08-15 13:00:26
1572
原创 QT项目之翻金币游戏
顺便一提在使用QT windeployqt命令 打包动态库时如果遇到打包后的软件点击无反应的情况可以试着重装QT(我就是这么解决的)软件打包用的是Enigma Virtual Box。
2022-08-13 10:45:00
120
原创 c++面向对象三大特性之多态
多态即多种形态,根据不同的对象调用同一虚函数时产生的不同状态使用virtual关键字定义的成员函数{public{cout
2022-08-01 23:06:50
77
1
原创 c++面向对象三大特性之继承
下一级的类有上一级的类的共性且具有自己的特点这样的类之间的关系叫做继承此时相对上一级为,相对下一级为通过继承共性来减少多余代码class父类{}class子类继承方式父类{}一共有三种所有继承方式子类均无法访问父类隐私权限内容1)所有成员权限均不变继承2)所有权限均变为保护权限3)所有权限均变为隐私权限子类继承父类所有属性和行为(包括隐私权限下的)此时的输出结果为16可见子类继承了父类的隐私权限下的成员变量。......
2022-08-01 21:04:35
88
1
原创 c++面向对象三大特性之封装
保护权限可在类内访问不可在类外访问。隐私权限可在类内访问不可在类外访问。程序在调用对象时候会自动调用构造,无须手动调用,而且只会调用一次。程序在对象销毁前会自动调用析构,无须手动调用,而且只会调用。封装是将对象的属性和行为封装起来表现事物的特性。析构函数不可以有参数,因此不可以发生重载。对象的行为通常是函数故又称成员函数。析构函数,没有返回值也不写void。析构函数是最后进行清理的函数。......
2022-07-31 19:14:50
159
1
原创 四川大学2021-2022学年第一学期开卷考试小项目
因为是是按照卷子上要求来设计的所以有些功能比较奇怪,不是BUG;另外发下此套卷子链接。
2022-07-27 09:57:44
2438
1
原创 c指针的进阶-套娃
在了解了基本的指针类型后,发现许多的高级概念无非就是指针函数数组三个元素互相套娃。(注意此时并非将helloworld的地址放入指针中而是将首元素地址放入)将某个函数地址传参之后在特定情况下通过第三方(如指针)调用。又由于运算符*的运算优先级不高所以先用括号括起来声明指针。此时void为指向函数的返回类型。指针存储某个字符类型变量地址。2)指向函数指针数组的指针。字符指针即指向字符的指针。通过一个指针指向字符常量。(int)为函数参数类型。即存放函数指针的数组。...
2022-07-18 15:53:47
271
1
原创 c语言指针初级
1.什么是指针指针是变量对应的地址如下当p存储了a的地址时可以说p指向a也可以说p是a的指针2.指针的声明如上用于储存地址的变量p被称为指针变量,前面的int为指针类型(与地址对应数据保持一致)* 该符号声明指针变量3.如何通过指针访问地址对应的值使用解引用符此时a的值便更改为10;4.野指针野指针是随机的,不符合规范的指针产生原因1)未明确赋值地址此时未将明确的地址赋值给指针指针地址默认为随机2)数组的越界访问当i = 10时数组便已经越界此时指针p便是野指针,指向位置未知3)指针
2022-07-14 11:46:11
623
1
原创 关于devc++显示中文不显示,乱码和生成的可执行文件中文乱码
1.不显示中文工具----编译器选项----显示-----去掉底下的复选框(第一个consolas下面) 2,编译的中文乱码这是由于devc++默认编码格式是utf-8,与运行窗口编码格式不同可通过修改注册表来避免(注册表不要乱动)win + r打开运行输入regedit打开注册表 找到HKEY_CURRENT_USER\Console下面的devc++呢个修改codepage为65001(注意为十进制) 3.编译产生的可执行文件(.exe)乱码在源文件前加入system("chcp 65001");意为调
2022-07-07 12:37:54
39594
12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人