自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 并查集板子

例题是acw836合并集合。

2023-02-20 17:35:53 169

原创 基础数论知识

埃及数学家发明的质数筛选算法,若一个数不为质数,则一定存在位于该数前的数的倍数是该数,通过一个标记数组bool st[N] ,筛选质数的倍数即可,时间复杂度为O(Nloglogn)直接筛选 从 2 - n - 1 范围的数, 判断是否能整除。分解质因数也是常用的数学策略,代码实现如下。优化时间复杂度到 o(sqrt(n))

2022-12-23 17:41:20 212

原创 前缀和 与 差分 的一般实现与应用

区间内的 增加l值的操作。二维前缀和适用于矩阵。

2022-12-02 17:04:21 203

原创 常用算法模板(双指针,位运算,lowbit,区间合并,离散化)

拆分单词 abc cde htd(严格上首个单词前面没有空格,其余单词都以1个空格隔开)lowbit运算 求出x最后一位二进制1 return x & ( -x );判断x的某个二进制位为1还是1 (x >> i) & 1。例题:最大不重复的数字字符串长度。

2022-11-30 16:41:22 172

原创 Floyd实现多源最短路问题

Floyd依赖于动态规划的思想,以邻接矩阵存储图,三重循环。

2022-11-21 10:51:08 74

原创 SPFA 与Bellman_ford 算法对存在负权值的单元最短路实现

SPFA 与Bellman_ford 算法对存在负权值的单元最短路实现。

2022-11-21 10:42:31 130

原创 迪杰斯特拉Dijkstra实现单源图最短路问题(朴素做法和堆优化实现)

稀疏图(边和点一个数量级)通常通过邻接表存储,手写链表。Dijkstra作为经典的单源最短路问题的实现算法。而稠密图(边是点的平方数量级) 通过临界矩阵存储。

2022-11-21 10:31:53 378

原创 kmp字符串匹配的理解

前缀表是当模式串与文本串不匹配时,要回退的位置记录下标 i 之前(包括i)有多大长度的相同前缀后缀前缀:不包含最后一个字符后缀 :不包含第一个字符为什么要用前缀表前缀表告诉我们,当前位置不匹配,要跳回的位置。

2022-11-03 10:07:12 107

原创 c++实现带头节点的链表类

链表类由 list1.h声明 由 list.cpp实现。uselist.cpp是对链表类的初步使用。

2022-10-31 17:01:34 109

原创 c++ 小顶堆 大顶堆的实现 (基于优先队列)

Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆。,因为优先级队列对外接口只是从队头取元素,从队尾添加元素,再无其他取元素的方式,看起来就是一个队列。而且优先级队列内部元素是自动依照元素的权值排列。那么它是如何有序排列的呢?

2022-10-20 14:50:56 1070

原创 归并排序与快速排序 二分查找(c++实现)

上图为快速排序的c++实现上图为归并排序的c++实现二分查找(适用于左闭右闭的区间查找)

2022-10-14 10:25:23 381

原创 TCP/IP网络编程 十五章 十六章 习题解答

1.标准IO函数具有良好的移植性这些函数都是基于ANSIC定义的,支持所有的操作系统。2.标准IO函数可以利用缓冲提高性能使用标准IO函数将得到一个额外缓冲的支持,需要传输的数据越多,有无缓冲带来的性能差异越大。...

2022-07-23 10:59:00 610

原创 TCP/IP网络编程 第十章 第十一章

1下列关于进程的说法错误的是?.bc进程通过返回值确定父子关系,进程是计算机资源分配的最小资源单位2错误的是?.cd父子进程遵循读时共享,写时复制的原则fork()后的子进程执行if判断pid==0的代码段3.4.请说明进程变为僵尸进程的过程及预防措施僵尸进程是子进程,在子进程结束的时候,其返回值会被传到操作系统,直到该返回值被父进程接受为止,此前该子进程一直为僵尸进程存在,为了防止这种情况用wait/waitpid来处理子进程结束的返回值5....

2022-07-21 19:43:03 402

原创 TCP/IP 网络编程 第七章 第八章 第九章 习题解答

TCP是面向连接的,流的概念是通过相互连接的套接字进入数据交换的状态,而UDP是没有连接这个概念的单方面的断开连接,意味着端口既不能接收数据,也不能再传输数据,若对方端还有消息未传送完毕,则会引起问题主机在结束发送后还能接收来自另一端数据的能力。这就是所谓的半关闭。主机半关闭会使其​发送最后一个报文段时附带一个EOF,告诉对方主机自己没有数据要发了,但还是可以接收对方主机传送的数据。b、db.DNS是域名到IP地址的转换,路由器根据IP进行路径选择d.DNS本身和操作系统无关如果网络上没有特别的限制,

2022-06-20 18:18:32 357

原创 TCP/IP网络编程 第六章 习题解答

b、c、eb.UDP是无连接的,所以只需要一个套接字,发送完一个接着再发送令一个就行c.UDP套接字使用的端口号可以和TCP套接字使用的端口号一样,因为UDP和TCP本身就存在区别,所以不需要区别端口号e.争对UDP可以调用connect函数,但是只是保持连接,提高了效率,但是并不会进行三次握手(从三次握手内容分析也可知道是争对TCP用的)路由器通过IP负责链路选择,应用程序通过UDP负责端到端的传输。TCP于UDP传输过程最大不同就是TCP要先建立连接,数据传输结束还要断开连接。所以在传输数据少,

2022-06-20 18:04:37 526

原创 TCP/IP网络编程 第四章 第五章 习题解答

从上到下应用层->tcp->ip->链路层应用层->udp->ip->链路层数据链路层通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路,为IP 层提供数据传送服务。(链路层是网络通信的物理基础)网络层通过路由选择算法,为分组选择最适当的路径,实现两个端系统之间的数据透明传送。ARPANET 的研制经验表明,对于复杂的计算机网络协议,其结构应该是层次式的。分层的好处:隔层之间是独立的,灵活性好,结构上可以分隔开,易于实现和维护,能促进标准化工作。调用listen函数时创建了连接请

2022-06-20 11:04:00 1012

原创 TCP/IP网络编程 习题解答 第三章

IPv4(四字节)和IPv6(十六字节)的主要差别是表示IP地址所用的字节数,IPv6主要是应对2010年前后IP地址耗尽的问题。向目标主机传输数据,首先向目标IP所属的网络传输数据。此时使用的是IP地址中的网络ID。数据传到路由器,路由器将参照IP地址的主机号查找路由表,从对应的网口发送数据,数据经过路由器转发最终送到目标主机。很明显 IP是为了区别网络下不同的主机,而S端口是为了区分同一主机下的不同SOCKET,以保证各进程都能收发数据0-127 A 类地址 或者 说 A地址的首位以0开始128

2022-06-19 18:29:53 1231 2

原创 TCP/IP网络编程习题解答 第二章

1.什么是协议,在收发数据中定义协议有什么意义协议就是完成数据交换而定好的约定,因此定义协议意味着对数据传输所必需的承诺进行定义2.面向连接的TCP套接字传输特性有三点,请说明1.数据不会丢失2.按序传输3.数据没有边界3.A C E4.UDP TCP TCP (结合两种传输特性分析)5.TCP类型的套接字没有数据边界,因此输入和输出的函数响应次数并没有意...

2022-06-19 18:02:01 733

原创 TCP/IP网络编程习题解答 第一章

1.套接字在网络编程中的作用是什么?为什么称为套接字在已经建立物理链接的计算机上,进行网络传输使用的软件设备,由操作系统提供socket翻译为插座,这里理解为套接字2.在服务器端创建套接字后,会依次调用listen函数和accept函数,比较并说明两者的作用listen函数监听连接accept函数受理连接,在没有连接时,调用该函数,不会返回,和listen存在前后的逻辑关系Linux不区分文件与套接字,而windows区分,所以设置特殊的函数进行I/O为了区分网络上不同机器的套接字,需要地址信息,先初始化再

2022-06-19 10:27:14 593

原创 leetcode 不用加减乘除算加法 || 二进制中1的个数

不能使用加减乘除进行运算,那么我们可以考虑计算机导论中学过的 ^(异或)运算 以及 &(与运算)根据上述的思路 代码如下class Solution {public: int Add(int num1, int num2) { while(num2!=0){ int sum=num1^num2; int add=(unsigned int )(num1&num2)&lt...

2022-05-06 15:29:27 96

原创 jz47 礼物的最大价值(动态规划思路)

动态规划问题的关键是,寻找dp状态方程,将结果与 dp状态绑定起来

2022-05-05 10:34:04 239

原创 剑指offer JZ10斐波那契数列

很多同学在刚开始学习递归时,斐波那契数列是一个经典的例子,在解决此题中,递归的思想同时扮演着重要的角色。解法1:class Solution {public: int Fibonacci(int n) { if(n<=2) return 1; //先解决n=1或2的特殊情况 else return Fibonacci(n-1)+Fibonacci(n-2); //调用函数,例如 求f(3)时,f(3)=..

2022-03-02 15:10:01 315

原创 leetcode剑指offer JZ25 合并两个排序的链表

已知要合并的两个链表是递增的排列,合并为新链表时我们可以考虑建立伪头部/** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 *//** * * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类 */struct ListNode* M...

2022-03-01 21:35:06 617

原创 leetcode剑指offer JZ3 数组中重复的数字

给出 vector<int>&numbers 参数判断重复数字,若有则返回值 ,否则 返回-1;可以根据stl标准库的set容器 调用方法即可class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型vector * @return int整型 */ int dupl

2022-03-01 11:40:57 217

原创 leetcode剑指offer JZ42 连续子数组的最大和

此题笔者想出两种 解题模式第一种暴力解决方法,直接遍历数组array 依次计算a[1]的值 a[1]+a[2]的值 a[1]+a[2]+a[3]的值依次类推求出 各种连续子数组的值,然后依次与max值比较。第二种采用动态规划的思想class Solution {public: int FindGreatestSumOfSubArray(vector<int> array) { int cursum=0; //cursum为截止到

2022-03-01 11:19:11 213

原创 leetcode剑指offer JZ73 翻转单词序列

这道题主要是考察对string类对象字符串理解与使用:代码注释如下#include<iostream>using namespace std;class Solution {public: string ReverseSentence(string str) { if (str.empty()) return str; //特殊情况的话直接返回空值 string ret = ""; //设置两个空字符串 ...

2022-02-28 21:59:45 156

原创 leetcode剑指offer jz5 替换空格字符串

由题意可知,简单的遍历字符串即可#include<iostream>using namespace std;class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ string replaceSpace(string s) {...

2022-02-28 21:44:20 6427

原创 Leetcode剑指offer JZ9 双栈实现队列

利用栈的特性(FILO)即先进后出原则,遇到熟悉的数据结构,有概念但没思路的话,就采用模拟的思想,如下图所示:将stack1作为入队栈,stack2作为出队栈#include<iostream>using namespace std;class Solution{public: void push(int node) { stack1.push(node) } int pop() { if(stack2.empty(..

2022-02-23 22:34:20 213

原创 leetcode剑指offer JZ23:链表中环的入口节点

可以考虑利用set容器存放链表中的节点,根据set的不可重复,利用count函数判断是否存放重复数据。unordered set的无序列排列即可#include<iostream>using namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};clas..

2022-02-23 11:21:42 465

空空如也

空空如也

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

TA关注的人

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