自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 五种典型的IO模型

五种IO模型阻塞IO非阻塞IO信号驱动IO异步IO多路转接IO阻塞IO非阻塞IO信号驱动IO异步IO多路转接IO

2020-12-18 10:36:59 260

原创 配置属于你的VIM

打造属于你的VIM吧!VIM是什么?VIM配置文件我的VIMVIM是什么?VIM配置文件syntax on //开启高亮set number //设置行号set norelativenumberset cursorline //设置本行线set wrap //set showcmd set wildmenu //设置补全提示noremap n h //将h键的操作改为nnore

2020-10-28 18:36:15 217

原创 Leetcode--大数加法与乘法

大数加法与乘法大数加法:分析:代码:大数乘法:分析:代码:大数加法:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由’0’~'9’这10种字符组成)示例1输入“1”,“99”返回值“100”说明1+99=100分析:字符串之间的相加一定要考虑大数问题,例如s1 = “9999999999999” ,s2 = “999999999999999999”,如果直接把两个字符串转为整型相加,就会出现整型溢出的问题,所以

2020-10-28 16:47:43 679

原创 C++内存管理

C++内存管理(一)C/C++的内存分布在c++中内存分为5个区,分别是堆、栈、自由存储区、全局、静态存储区和常量存储区。堆:用于程序的内存动态分配。c语言使用malloc从堆上分配内存,使用free释放已分配的对应内存栈:函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。自由存储区:是c++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。全局/静态存储区:这块内存在编译的时候就已经分配好的,在程序整个运行期间都存在。常量

2020-10-28 14:53:35 582

原创 Leetcode--计算日期到该年的天数转换

计算日期到该年的天数转换题目描述:分析:代码:注意事项:题目描述:输入某年某月某日,判断这一天是这一年的第几天?。测试用例有多组,注意循环输入输入描述:输入多行,每行间隔分割,分别是年,月,日输出描述:成功:返回outDay输出计算后的第几天;失败:返回-1示例:输入2012 12 31输出366分析:这个题要计算xx年yy月kk日这一天是xx年的第多少天,所以一定要考虑闰年的情况,而由于每个月的天数是不一样的,我们在计算的时候为了方便,可以用一个数组来保存每个月的天数代码:

2020-10-28 10:25:27 364

原创 计算机网络知识总结

计算机网络一级目录TCP/IP五层模型:模型介绍:应用层:传输层:网络层:数据链路层:物理层:三级目录一级目录TCP/IP五层模型:模型介绍:应用层:传输层:网络层:数据链路层:物理层:三级目录...

2020-10-26 13:01:06 297 2

原创 网络中的链路层

网络中的链路层链路层:以太网协议格式:ARP协议:工作原理:数据帧的限制:MTU对TCP协议的影响:MTU对UDP协议的影响:链路层:链路层主要的工作就是通过MAC地址负责与相邻设备之间的数据传输主要协议有以太网协议,主要设备是交换机在两个主机进行通信的时候,中间有大量的星型路由网络结构,路径的选择是网络层干的事,链路层就负责每个相邻路由器之间的数据传输相邻设备:通过网线连接起来的两个设备就是相邻设备一个路由器可能连接了很多设备,一个设备有很多相邻设备,那么问题来了,如何识别指定的相邻设备就很重

2020-10-26 12:56:45 728

原创 网络中网络层协议

网络中网络层协议网络层:(一)IP协议:1. 地址管理:1.1 IP地址1.2 如何分配IP地址1.3 IP地址的组成:网络号+主机号1.4 网段(网络号)的划分1.5 特殊的IP地址2. 路由选择:(二)NAT/NAPT协议:(三)ICMP协议:网络层:网络层:负责地址管理与路由选择;主要的协议是IP协议;主要的设备是路由器还有NAT/NAPT/ICMP协议(一)IP协议:4位协议版本:IPV4/IPV64位头部长度:IP报头也是不定长的,因为有40字节的选项数据,所以最长60字节;最小2

2020-10-26 12:23:56 851

原创 网络中传输层协议

网络传输层协议传输层:UDP:无连接:不可靠:面向数据报:TCP:面向连接:可靠:字节流:常见面试题:传输层:传输层主要是负责应用程序之间的数据传输,传输层主要的协议有TCP和UDPUDP:UDP:无连接、不可靠、面向数据报的传输UDP的协议格式:16位的源端口/16位的目的端口:描述数据从哪个进程发送到哪个进程 – 负责实现应用程序间的数据传输16位的数据报长度:包含UDP报文头部在内的整体报文长度,16位存储的最大数字为6553516位的校验和:二进制反码求和算法,用于校验接收到的数

2020-10-26 11:37:00 4033 1

原创 STL_string模拟实现

stringstring介绍:代码:代码实现:代码测试:测试结果:注意事项:string介绍:string是表示字符串的字符串类该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;不能操作多字节或者变长字符的序列代码:代码实现:namespace ZYY{ cla

2020-10-25 17:11:02 167

原创 STL_list模拟实现

listlist介绍:代码:代码测试:执行结果:注意事项:list介绍:list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能向前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置

2020-10-25 12:08:46 165

原创 STL_vector模拟实现

vectorvector介绍:代码:对代码代码进行测试:执行结果:vector介绍:vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。

2020-10-25 09:39:24 713

原创 0-1背包问题

0-1背包问题题目描述:分析:代码:题目描述:有为N件物品,它们的重量w分别是w1,w2,…,wn,它们的价值v分别是v1,v2,…,vn,每件物品数量有且仅有一个,现在给你个承重为M的背包,求背包里装入的物品具有的价值最大总和?输入:第一行输入物品个数n和背包容量m第二行输入每个物品的重量第三行是输入每个物品的价值输出:物品个数n背包容量为m的最大价值示例:输入6 102 5 4 7 9 32 4 9 3 4 7输出18分析:dp数组定义dp[i][j]表示有i个物品背

2020-08-14 19:05:19 370

原创 Leetcode--字符串相加与字符串相减

字符串相加与字符串相减题目描述1:分析1:代码1:题目描述2:分析2:代码2:注意事项:题目描述1:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。示例:输入string s1 = “12” string s2 = “28”输出string s3 = “40”分析1:这个题最容易想到的做法就是将字符串直接转换成数字进行相加,然后将相加和转为字符串返回,但是两个字符串直接转为数字是很容易溢出的,所以这个简单的方法不可行,我们要在字符串的基础上一位一位的进行相加,需要注意的

2020-08-14 16:04:54 1561 2

原创 Leetcode--被围绕的区域

被围绕的区域题目描述:分析1:代码1:问题:分析2:代码2:注意事项:题目描述:给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界

2020-08-11 22:42:02 208

原创 Leetcode--复杂链表的复制

复杂链表的复制题目描述:分析1:代码1:分析2:代码2:注意事项:题目描述:请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。分析1:我们可以依次遍历这个链表,用一个哈希结构<Node*,Node*>来存储每个节点与新构建的节点的关系,这样一来,新节点的的指针域就可以从键域的指针域来获得。如:1->2->3, 哈希结构为(1,1)

2020-08-11 22:22:00 273

原创 网络中应用层协议

文件目录一:基础概念:(一)超文本文件(二)DNS协议(三)URL1.URL与URI的区别(四)长链接与短链接二:HTTP与HTTPS的区别:(一)HTTP1.HTTP的特点2.HTTP请求报文3.HTTP响应报文(二)HTTPS1.对称加密与非对称加密2.HTTPS可能会收到的威胁三:HTTP与HTTPS的区别:四:GET与POST的区别:五:HTTP1.0与HTTP1.1的区别:一:基础概念:(一)超文本文件WWW上的每个网页都对应一个文件。我们浏览一个页面,要先把页面所对应的文件从提供这个文件的

2020-08-07 17:40:59 1456

原创 阿里8-3笔试题

8-3笔试题题目描述:分析:代码:注意事项:题目描述:小明有n个朋友,每个朋友有一定数量的钱去买房子,每个房子有舒适度和价格。要求:1、一个人最多买一个房子。2、每个房子只能被一个人买。3、钱数必须大于房子价格。问:如何买房子,使得舒适度之和最大。输入要求:第一行输入朋友个数与房子个数第二行依次输入每个人有多少钱,输入n次第三行依次输入每个房子对应的舒适度与价钱输出要求:输出舒适度的最大值示例:输入:5 65 3 2 10 79 89 37 64 71 78 1

2020-08-06 23:09:45 175

原创 Leetcode--打劫家舍

打劫家舍题目描述:分析:代码:题目描述:分析:代码:

2020-08-06 21:27:06 160

原创 My_memset函数

Memset函数介绍函数的模拟实现函数的相关问题函数介绍函数的模拟实现函数的相关问题

2020-07-30 22:43:12 684

原创 Leetcode--不同的二叉搜索树

不同的二叉搜索树题目描述:二级目录三级目录题目描述:二级目录三级目录

2020-07-22 18:13:54 181

原创 Leetcode--最长回文子串

最长回文子串题目描述:二级目录三级目录题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。最长回文子串:正反遍历结果相同的子串。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”二级目录三级目录...

2020-07-22 17:58:39 119

原创 实现my_strcpy函数

实现一个my_strcpy函数题目描述:代码1:分析1:完整的正确代码:分析2:题目描述:写出完整版的strcpy函数代码1:char * my_strcpy(char *str1,const char *str2) //[1]{ assert(str1 != NULL && str2 != NULL); //[2] char *ret = str1; //[3] while (*str2!='\0')//[4] { *st

2020-07-20 15:00:25 1404

原创 设计一个页面缓存机制

页面缓存机制题目描述:解答:页面缓存机制:描述三种页面置换算法:实现一个LRU缓存机制:分析:代码:题目描述:请描述页面置换算法?1.最佳置换算法(OPT)2.先进先出置换算法(FIFO)3.最少使用(LRU)置换算法4 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key); 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 pu

2020-07-17 19:45:33 262

原创 Leetcode--地下城游戏

地下城游戏题目描述:分析1:代码1:分析2:代码2:注意事项:题目描述:一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么

2020-07-12 23:17:32 239

原创 Leetcode--最佳股票买卖时机

题目描述:

2020-07-10 22:26:23 508

原创 Leetcode--恢复空格

题目描述:哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。示例:输入:dict

2020-07-09 21:33:34 207

原创 Leetcode--无重复字符的最长子串

题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。不成

2020-07-08 22:55:04 241

原创 Leetcode--不同路径

题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 :输入:[[0,0,0],[0,1,0],[0,0,0]]输出: 2解释:3x3 网格的正中间有一个障碍物。从左上角到右下

2020-07-06 15:33:59 188

原创 Bitmap--海量数据排序

题目描述:给10g的整型数据进行从小到大的排序。分析:经常能够看到有些大厂的面试题里有一些这样的题目:一个10G的文件,里面全部是自然数,一行一个,乱序排列,对其排序。在32位机器上面完成,内存限制为 2G。首先来分析一下题目,10G的文件,只有2G内存,显然,不可能一次性把数据放入内存中直接排序。那么,还有什么其他办法呢?遍寻资料,可以发现大致有两种解决方案:1、把大文件分成多个小文件,分别排序,到最后合并成一个文件。2、另外一种方法就是著名的bitmap算法了。Bitmap算法思想:所谓

2020-07-06 15:30:10 662

原创 将点分十进制转换为ip地址表示

问题描述:实现函数将点分十进制表示的字符串转换为 unsigned int 整型数值unsigned int my_ResDotDec(const char *strip);参数说明:strip 点分十进制表示的字符串;示例: strip =“128.11.3.31” ; 返回值: 2148205343;分析:灵活运用联合体的特点,ip地址为unsigned int类型,点分十进制的字符相当于4个用’.'分开的unsigned char类型,所以我们可以设计一个联合体IPNode来保存stri

2020-07-06 01:02:27 1763

原创 Leetcode--两个字符串的通配符匹配

题目描述:给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘’ 的通配符匹配。‘?’ 可以匹配任何单个字符。'’ 可以匹配任意字符串(包括空字符串)。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。...

2020-07-06 00:22:44 855

原创 将ip地址转换为点分十进制表示

题目描述:实现函数将 unsigned int 整型数值转为点分十进制记法表示:点分十进制(Dotted Decimal Notation)全称为点分(点式)十进制表示法,是IPv4的IP地址标识方法。IPv4中用四个字节表示一个IP地址,每个字节按照十进制表示为0~255。点分十进制就是用4个从0~255的数字,来表示一个IP地址。char * my_DotDec(unsigned int ip,char *buffer);参数说明:value:欲转换的数数值。buffer:目标字符串的

2020-07-04 20:29:36 7432

原创 My_atoi--字符串转换为数值,并伴有进制转换!

实现一个My_atoi函数:实现一个int My_atoi(const char* buff),将buff中的数值字符串转换为数值,并且该函数支持十六进制与八进制例如:char *buff = " 0xff.14",返回255,char *buff = " afda0123"返回83.分析:这个题字面意思看起来很简单,就是将字符串中的数值字符串转换为数值并将其返回,但是这个题中有许多的细节都容易被忽略掉:1.在开始转换之前遇到非所需转换字符时跳过该字符,在开始转换时遇到非所需转换字符就停止转换

2020-07-04 17:31:21 278

原创 Leetcode--用两个栈实现一个队列

题目描述:用两个栈来实现一个队列,此队列需要完成appendTail尾插与deleteHead头删,并返回所删除的元素,若队列中没有元素可删除,返回-1分析:实现一个队列说白了就是让我们实现元素的先进先出功能,怎么让先进去的数实现先出功能就是这个问题的关键所在。两个栈s1,s2,s1用来作为插入,s2用来作为删除,插入时很简单,直接向s1中push()元素,删除时,我们直接在s2中top()、pop(),如果s2中没有元素存在,我们就把s1中的所有元素push到s2中,如果s1中也没有元素就说明没有

2020-07-02 22:32:59 1454

原创 Leetcode--最长重复子数组

题目描述:给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3, 2, 1] 。不成文的小规则:牢记子序列默认不连续,子数组默认是连续的!!!解法1动态规划:分析:当我们遇到最值问题,无脑动态规划就完了,而动态规划最重要的一点就是要想好遍历方向和dp保存的信息是什么即可运用动态规划的DP二维数组dp[i][j]表示以A[i-1]与B[j-1]结尾的公

2020-07-02 22:15:02 545

原创 将非负十进制数字转为任意进制的数字(腾讯面试题)

代码如下:

2020-02-23 20:06:26 271

原创 实现一个字符串比较函数MyStrcmp

1.思想:①.比较两个字符串涉及对两个字符串对应的字符逐个进行比较,直到发现不匹配为止,返回比较结果。②.strcmp函数实际上是对字符的ASCII码进行比较,strcmp函数最多比较到其中一个字符串遇到’\0’为止。2.函数原型如下:int my_strcmp(char const *p,char const *q)3.返回结果如下规定:①p>q,返回值1;②p=q,返回值0;...

2020-02-19 21:10:47 4148 1

原创 二路归并排序

每个归并段里的数字都是有序的需要4个控制变量:L1:第一个归并段的起始位置L2:第一个归并段的结束位置H1:下一个归并段的起始位置H2:下一个归并段的结束位置L1 L2连个变量用于比较,H1 H2两个变量用于标记两个归并段的结尾位置...

2020-02-18 16:33:48 887

原创 基数排序

基数排序:基数排序是有多个关键字的数据的排序算法是八大排序中唯一不需要两两数据比较的算法例如扑克牌:关键字有花色,大小数据的关键字就在于位及每个位的大小代码的思路:循环以下整体(以循环的位数为依据:个位、十位、百位…):1.按照位数将数据插入到相应的队列中2.按照队列的顺序依次将数据弹出代码的过程:1.获取最大数据的位数(得到循环的次数)2.将所有的数据按照顺序(每个位的值的...

2020-02-18 14:51:29 185

空空如也

空空如也

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

TA关注的人

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