自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 将字符串中的空格替换成“%20”

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。1.计算空格数量 2.给出替换之后的字符串长度 3.从后向前修改str

2017-08-07 16:44:42 513

原创 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。由于数组是向右向下递增的,因此,我们选取左下角为基准值val。 若是target大于val,则列++ 若是target小于val,则行--

2017-08-07 16:15:56 1641

原创 删除小写字母字符串中重复字符

删除小写字母字符串中重复元素

2017-08-06 22:07:36 928

原创 将N个字符的数组,循环右移K位。时间复杂度O(N)

1.逆序排列 abcd: abcd1234 -> dcba1234;2.逆序排列 1234: dcba1234-> dcba4321;3.全部逆序 dcba4321->1234abcd。

2017-08-06 10:58:21 1390

原创 时间复杂度为O(n)的排序

对数组a进行排序,要求时间复杂度为O(N) 以空间换时间,新建一个数组b,这里假设arr中最大的数字不超过100,b数组全部初始化为0;例如arr中有数据12,则在b中对应的下标位置+1

2017-08-06 09:48:13 1485 1

原创 shell脚本中字符串截取的方法

字符串切割的九种方法

2017-08-03 09:45:53 1122

原创 STL空间配置器

为什么要有空间配置器? 1.内存碎片问题(外碎片) 由于频繁分配、释放小块内存容易在堆中造成外碎片(极端情况下就是堆中空闲的内存总量满足一个请求,但是这些空闲的块都不连续,导致任何一个单独的空闲的块都无法满足这个请求)。2.频繁的分配小块内存,效率比较低。 开辟空间的时候,分配器去找一块空闲块给用户。找空闲块也是需要时间的,尤其是在外碎片比较多的情况下。

2017-08-02 12:54:34 526

原创 C语言模拟实现C++的继承多态

C语言模拟实现C++的继承多态

2017-07-31 22:53:33 309

原创 TCP可靠性

TCP提供一种面向连接的、可靠的字节流服务。我们都知道两个使用TCP的应用,必须先建立TCP连接才能进行数据通信。

2017-07-31 12:54:04 232

原创 netstat

netstat是在内核中访问网络相关信息的程序,它能够提供TCP连接、TCP和UDP监听、进程内存管理的状态。netstat也是一种控制台命令,是一个监控TCP/IP网络的非常有用的工具,他可以显示路由表、实际网络连接以及每一个网络接口设备的状态信息。使用netstat可以让用户知道有哪些网络连接正在运作,使用时如果不带参数,netstat显示活动的TCP连接。

2017-07-31 12:51:51 268

原创 Linux下 crond和crontab

crond,一般情况下,系统都会默认启动次调度服务,crond会每分钟检查需要定时执行的操作。 crond是一个命令,常见于Unix和类Unix的操作系统中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放区“crontab”文件中,以供之后读取和执行。 crond正是crontab的守护进程。crontab,顾名思义,定时任务列表,通过crontab来配置定时任务。

2017-07-31 11:06:00 289

原创 判断一个节点是否在一棵二叉树中

使用前序遍历判断

2017-07-31 10:30:32 739 1

原创 判断一颗二叉树是是否是另一颗树的子树

判断一颗二叉树是是否是另一颗树的子树

2017-07-31 10:26:41 378

原创 Linux进程

进程:进程是程序额一次执行过程,是系统运行资源分配和处理机调度的一个独占单位。

2017-07-30 22:17:48 360

原创 链表面试题:判断两个链表是否相交

判断两个链表是否相交,若相交,求交点。(假设链表不带环)判断两个链表是否相交,若相交,求交点。(假设链表可能带环)

2017-07-30 20:29:26 316

原创 由前序遍历和中序遍历重建二叉树

由前序遍历和中序遍历重建二叉树

2017-07-30 14:12:37 252

原创 TCP协议

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

2017-07-30 14:10:42 274

原创 TCP四次挥手中的TIME_WAIT状态存在的理由

TCP四次挥手

2017-07-30 14:09:00 761

原创 将二叉搜索树转换成一个排序的双向链表

搜索树每一棵子树的左节点都比根节点小,每一个右节点都比根节点大。 根据其特性,我们可以通过中序遍历线索化的相关变形,来改变指针指向,实现变形。

2017-07-30 14:07:03 354

原创 求二叉树中两个节点的最近公共祖先

要求考虑以下三种种情况,给出解决方案,并解决: 1:二叉树每个节点有parent(三叉链) 2:二叉树是搜索二叉树。 3:就是普通二叉树。(尽可能实现时间复杂度为O(N))

2017-07-28 22:21:24 672

原创 判断一棵树是否是完全二叉树

这道题可以看作是层序遍历的变形。在二叉树的层序遍历中,我们借助一个数据结构队列,根据其先进先出的性质,实现层序遍历。可以定义一个flag标志位,一旦遇到空节点,标志位生效。

2017-07-28 15:29:28 350

原创 二叉树的镜像

求一棵二叉树的镜像,归根结底就是交换这棵树及其每个子树的左右节点。通过递归即可简单的实现。

2017-07-26 16:14:04 198

原创 判断一棵树是否是平衡二叉树及其时间复杂度的优化

平衡二叉树:它是一棵空树或者左右子树的高度差绝对值不超过1,并且左右两棵子树都是平衡二叉树。要判断一棵树是否是平衡二叉树,由其定义我们很容易想到通过计算出左右两棵子树的高度及其高度差来进行判断。

2017-07-26 15:46:36 2586 1

原创 链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6

给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6

2017-07-25 17:12:46 1006

原创 模拟实现strlen、strcpy、strncpy、strcat、strcmp

C语言模拟实现

2017-07-24 16:37:02 218

原创 复杂链表的复制

复杂链表:除了有一个指向下一个节点的next指针外,还有一个指向随机节点的random指针

2017-07-23 22:41:57 199

原创 二叉树的非递归遍历

二叉树递归遍历的时候,将其分为根、左子树、右子树三个部分。其非递归遍历,也是分为三个部分,通过数据结构“栈”的入栈出栈操作以及其先入后出的特性,实现其遍历

2017-07-23 12:54:30 395

原创 二叉树的基本操作

二叉树的基本操作多是由递归来实现的,包括其创建、遍历等。 根据其结构,分为根、左子树、右子树来进行相应的操作。

2017-07-23 12:49:04 236

原创 二叉树

二叉树的特点1.每个节点最多有两棵子树,即二叉树中不存在度大于2的节点(分支数最大不超过2) 2.二叉树的子树有左右之分,也就是说二叉树是有序的。二叉树相关概念节

2017-07-23 10:55:43 312

原创 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?

例如,N=100,那么N!末尾有两个0

2017-07-22 22:30:48 436

原创 TCP定时器

TCP使用四种定时器(Timer,也称为“计时器”): 重传计时器:Retransmission Timer 坚持计时器:Persistent Timer 保活计时器:Keeplive Timer 时间等待计时器:Time_Wait Timer。重传计时器 当TCP发送报文段时,就创建该特定报文段的重传计时器。 若在计时器截止时间到(通常60秒)之前收到了对此特定报文段的确认,则撤销

2017-07-17 10:51:45 279

原创 TCP层URG、PSH标识

在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置,URG表示为紧急报文。接下来我们分别对比URG和PSH(1)URG紧急位URG=1,该tcp报文为紧急报文;其中的紧

2017-07-17 09:55:49 379

原创 端口分类

“端口“是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。通俗地讲,端口(Port)就是电脑向网络开放的信息出入“门户”。和小区

2017-07-17 09:44:18 1732

转载 如何定义一个只能在堆上(栈上)生成对象的类?

在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造

2017-07-15 22:42:04 189

原创 路由生产算法

路由器使用路由算法来找到到达目的地的最佳路由。当说“最佳路由”时,考虑的参数包括诸如跳跃数(分组数据包在网络中从一个路由器或中间节点到另外的节点的行程)、延时以及分组数据包传输通信耗时。路由:数据包从源地址到目的地址所需要经过的路径,由一系列节点组成。路由某个路由节点为数据报选择投递方向的选路过程。 路由节点:一个具有路由功能的主机或者路由器,维护一张路由表,通过查询路由表来决定向哪个节点发送数据包

2017-07-15 10:54:04 290

原创 归并排序

基本思想: 它将要排序的序列分成两个长度相等的子序列,为每一个子序列进行排序,然后再将子序列合并成一个有序的序列。合并两个子序列的过程称为两路归并。

2017-07-13 13:38:41 227

原创 ARP协议

什么是ARP?   ARP (Address Resolution Protocol) 是个地址解析协议。 也就是说,在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。  在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直

2017-07-12 15:46:05 379

原创 NAT技术与代理服务器

NAT技术在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。根据规范,路由器是不能这样工作的,但它的确是一个方便并得到了广泛应用的技术

2017-07-12 09:34:02 458

原创 交换排序——快速排序

void QuickSort(int *arr, int begin, int end){ assert(arr); int div = PartSort1(arr, begin, end); if (div - 1>begin) PartSort1(arr, begin, div - 1); if (div + 1<end)

2017-07-11 18:38:32 414

原创 交换排序——冒泡排序

冒泡排序第一趟冒泡将最大的数冒在最后,第二趟将次大的数冒上去,以此类推。

2017-07-10 17:23:07 205

空空如也

空空如也

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

TA关注的人

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