自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无夜之凛冬的博客

各种学习心得

  • 博客(75)
  • 收藏
  • 关注

原创 Leetcode 第147场周赛题目学习

1137. 第 N 个泰波那契数题目描述泰波那契序列 Tn 定义如下:T0=0,T1=1,T2=1,且在n>=0的条件下Tn+3=Tn+Tn+1+Tn+2T_{0} = 0, T_{1} = 1, T_{2} = 1, 且在 n >= 0 的条件下 T_{n+3} = T{_n} + T_{n+1} + T_{n+2}T0​=0,T1​=1,T2​=1,且在n&g...

2019-07-31 22:57:25 212

原创 makefile小练习

练习内容C++写工厂模式代码,头文件和源文件分开C++写客户端测试程序使用make,将工厂模式编译为动态链接库,客户端程序编译为可执行文件使用Ubuntu操作系统,用vim写代码。结构图完成的内容如下图所示:application:最终生成的可执行文件include:存放头文件的文件夹lib:存放动态链接库的文件夹main.cpp:客户端程序src:存放源代码的文件夹...

2019-06-23 22:36:29 496

原创 Leetcode 第141场周赛题目学习

1089.复写零题目描述给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。示例1:输入:[1,0,2,3,0,4,5,0]输出:null解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]示例2:输...

2019-06-22 16:13:18 328

原创 Leetcode 第135场周赛题目学习

1037.有效的回旋镖题目描述回旋镖定义为一组三个点,这些点各不相同且不在一条直线上。给出平面上三个点组成的列表,判断这些点是否可以构成回旋镖。示例1:输入:[[1,1],[2,3],[3,2]]输出:true示例2:输入:[[1,1],[2,2],[3,3]]输出:false提示:points.length == 3points[i].length == 20 &...

2019-06-08 15:23:53 227

原创 【UNIX网络编程卷1】 第3章 套接字编程简介

3.2 套接字地址结构大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。每个协议族都定义自己的套接字地址结构,名字均以sockaddr_开头,并以对应每个协议族的唯一后缀结尾。3.2.1 IPv4套接字地址结构以sockaddr_in命名,定义在<netinet/in.h>头文件中。定义如下:struct in_addr{ in_addr_t s_addr; /*...

2019-06-08 12:26:33 225

原创 Leetcode 第138场周赛题目学习

1051.高度检查器题目描述学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。示例:输入:[1,1,4,2,1,3]输出:3解释:高度为 4、3 和最后一个 1 的学生,没有站在正确的位置。提示:1 <= heights.length <= ...

2019-06-02 18:25:51 302

原创 Leetcode第136场周赛学习

1041.困于环中的机器人题目描述在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。机器人可以接受下列三条指令之一:"G":直走 1 个单位"L":左转 90 度"R":右转 90 度机器人按顺序执行指令 instructions,并一直重复它们。只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。示例1:输入:"GGLLGG"输出...

2019-05-19 20:49:28 178

原创 【UNIX网络编程卷1】第2章 传输层:TCP、UDP和SCTP

2.2 总图各种协议说明:IPv4:网际协议版本4,给TCP、UDP、SCTP、ICMP和IGMP提供分组递送服务IPv6:网际协议版本6,给TCP、UDP、SCTP和ICMv6提供分组递送服务TCP:传输控制协议UDP:用户数据报协议SCTP:流控制传输协议,提供可靠全双工关联的面向连接的协议ICMP:网际控制消息协议,处理在路由器和主机之间流通的错误和控制消息。IGMP:网...

2019-05-19 13:53:35 223

原创 【UNIX网络编程卷1】第1章 简介

1.1 概述要编写通过计算机网络通信的程序,首先要确定这些程序相互通信所用的协议。一般认为Web服务器程序是一个长时间运行的程序(守护程序,daemon)它只在响应来自网络的请求时才发送网络消息。协议的另一端是Web客户程序,如某种浏览器,与服务器进程的通信总是由客户进程发起。在设计网络应用时,确定总是由客户发起请求往往能够简化协议和程序本身。1.2 一个简单的时间获取客户程序下例是TC...

2019-05-15 11:12:39 143

原创 第4章 文件系统:编写pwd

4.1 介绍pwd命令显示在目录树中的当前位置。从树根到所处位置所经过的目录的序列被称做路径(path)。4.2 从用户角度看文件系统4.2.1 目录和文件Unix系统中硬盘上的文件组成一棵目录树。每个目录能包含文件或其他的目录。4.2.2 目录命令mkdir:创建一个或多个目录rmdir:删除一个或多个目录mv:重命名或移动一个目录cd:转移工作目录pwd:打印出当前工作目...

2019-05-13 17:17:09 184

原创 Leetcode第133场周赛题目学习

1029.两地调度题目描述公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。示例:输入:[[10,20],[30,200],[400,50],[30,20]]输出:110解释:第一个人去 A 市,费用为 10。第二个人去 A 市,费用为 ...

2019-05-05 10:19:03 259

原创 Leetcode第134场周赛题目学习

1033.移动石子直到连续题目描述三枚石子放置在数轴上,位置分别为 a,b,c。每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。要使游戏结束,你...

2019-05-04 22:50:50 206

原创 Leetcode第132场周赛题目学习

5024.除数博弈题目描述爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假...

2019-04-19 10:26:52 328

原创 第3章 目录与文件属性:编写ls

3.2 问题1:ls命令能做什么3.2.1 ls可以列出文件名和文件的属性ls的默认动作是找出当前目录追那个所有文件的文件名,按字典序排序后输出。有些版本的ls默认会分栏输出,有些需要参数-c才会这样做。ls还能显示其他的信息,如果加上-l选项,ls会列出每个文件的详细信息,也叫ls的长格式。3.2.2 列出指定目录或文件的信息如果要列出一个非当前目录的内容或者是一个特定文件的信息,则需...

2019-04-15 20:03:59 297

原创 Leetcode第131场周赛题目学习

5018.驼峰式匹配题目描述如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)给定待查询列表 queries,和模式串 pattern,返回由布尔值组成的答案列表 answer。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 t...

2019-04-13 17:29:31 183

原创 第2章 用户、文件操作与联机帮助:缓冲技术与文件读写

2.8 内核缓冲技术内核会对磁盘上的数据块作缓冲。内核将磁盘上的数据块复制到内核缓冲区中,当一个用户空间中的进程要从磁盘上读取数据时,内核一般不直接读取磁盘,而是将内核缓冲区中的数据复制到进程的缓冲区中。当进程所要求的数据块不在内核缓冲区时,内核会把相应的数据块加入到请求数据列表中,挂起该进程。一段时间后,内核将相应数据块从磁盘读入内核缓冲区,再将数据复制到进程缓冲区,最后唤醒被挂起的进程。...

2019-04-03 09:46:17 102

原创 Leetcode第129场周赛题目学习

1022. 可被K整除的最小整数题目描述给定正整数 K,你需要找出可以被 K 整除的、仅包含数字 1 的最小正整数 N。返回 N 的长度。如果不存在这样的 N,就返回 -1。示例1:输入:1输出:1解释:最小的答案是 N = 1,其长度为 1。示例2:输入:2输出:-1解释:不存在可被 2 整除的正整数 N 。示例3输入:3输出:3解释:最小的答案是 N = 11...

2019-03-31 20:56:54 139

原创 Leetcode第130场周赛题目学习

1028.负二进制转换题目描述给出数字 N,返回由若干 "0" 和 "1"组成的字符串,该字符串为 N 的负二进制(base -2)表示。除非字符串就是 "0",否则返回的字符串中不能含有前导零。示例1:输入:2输出:"110"解释:(-2) ^ 2 + (-2) ^ 1 = 2示例2:输入:3输出:"111"解释:(-2) ^ 2 + (-2) ^ 1 + (-2) ^ ...

2019-03-31 19:31:43 194

原创 华为2018软件岗笔试题解题

第一题题目描述输入两个字母串,将两个字母串都包含的字母用’_'替换后,输出两个字母串的剩余部分。输入描述:输入两个字符串,字符串最大长度为100。字符串只包含字母,不可能为空串,区分大小写。输出描述:按字符串顺序输出处理后的字符串示例:输入abcdbdef输出a_c___ef解题思路采用哈希思想。首先遍历字母串a,记录其中出现的字母,随后遍历字母串b,将重复出现的字母...

2019-03-27 13:48:11 888

原创 快速排序

一 快速排序基本思路及实现1.基本方法通过选主元的方法将待排序列分割成两部分,递归进行排序。代码如下:#1.选主元def Median3(n,l,r): center=(l+r)//2 if n[l]>n[center]: n[l],n[center]=n[center],n[l] if n[l]>n[r]: n[l],n[r]=n[r],n[l] ...

2019-03-23 21:27:10 131

原创 第2章 用户、文件操作与联机帮助:编写cp命令

六 编写cp(读和写)1.cp命令能做什么cp能够复制文件,典型用法如下:cp source-file target-file如果target-file所指定的文件不存在,cp就创建这个文件,如果已经存在就覆盖,target-file的内容与source-file相同。2.cp命令是如何创建/重写文件的(1)创建/重写文件创建或重写文件的一种方法是使用系统调用函数creat,用法如...

2019-03-21 14:13:17 263

原创 第2章 用户、文件操作与联机帮助:编写who命令

一 介绍who命令会显示系统中活动用户的情况。二 关于命令whoUnix系统中,几乎所有的命令都是人为编写的程序。在Unix系统中增加新命令方法:将程序的可执行文件放到以下任意一个目录:/bin/usr/bin/usr/local/bin三 问题1:who命令做些什么who命令的输出格式如下:用户名 终端名 登录时间 用户登录地址可通过man命令查看联机帮助:四...

2019-03-20 13:36:07 215

原创 第1章 Unix系统编程概述

一 什么是系统编程1.操作系统的职责内存空间用来存放程序和数据,所有的程序必须在内存空间中才能运行。用来容纳操作系统的内存空间叫做系统空间,容纳应用程序的内存空间叫做用户空间。二 理解系统编程内核提供服务以便使系统程序可以直接访问系统资源1.系统资源处理器:内核安排一个程序何时开始执行,何时暂停、恢复、终止执行输入输出(I/O):程序中所有输入输出都必须流经内核进程管理内存:内...

2019-03-18 21:47:15 734

原创 Linux系统编程——网络编程基础(三)

四 网络通信若在网络中,需要使客户端连接的地址为一个有效的IP地址,这样就能在两台计算机之间通信。除IP地址外,计算机名也可用来代表一台网络中的计算机。1.查询主机名称通过访问主机数据库实现的。服务器数据库接口函数在头文件netdb.h中定义。与此相关的函数有gethostbyaddr()和gethostbyname()两个,一般形式如下:struct hostent* gethostby...

2019-03-17 18:37:12 116

原创 Leetcode第128场周赛 1014. 在 D 天内送达包裹的能力

题目描述传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:...

2019-03-17 13:52:22 240

原创 Leetcode第128场周赛 1013. 总持续时间可被 60 整除的歌曲

题目描述在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i &lt; j 且有 (time[i] + time[j]) % 60 == 0。示例1:输入:[30,20,150,100,40]输出:3解释:这三对的总持续时间可被 60 整数:(time[0] = 30, time[...

2019-03-17 13:16:24 196

原创 Linux系统编程——网络编程基础(二)

三 Socket套接字目的:将TCP/IP协议相关软件移植到UNIX类系统中。与套接字相关的函数被包含在头文件sys/socket.h中1.Socket套接字简介任何用户在通信之前,首先要申请一个Socket号,同时要知道对方的Socket号。向对方发出请求时,对方主机如果开机且可以接受连接请求,则双方可通话。Socket的通信机制与电话交换机制非常相似。Socket实质上提供了进程通信...

2019-03-14 11:02:40 161

原创 Linux系统编程——网络编程基础(一)

一 计算机网络的组成1.网络结构根据局域网的组成形式,可以将局域网分为星型网络、环状网络和总线网络3种基本网络结构。各种网络优缺点环状网络:优点:使计算机容易协调使用以及容易检测网络是否正确运行缺点:如果其中两根线断掉,整个网络失效星型网络:优点:保护网络不受某一根电缆损坏的影响总线网络:所需布线比星型网络少,和环状网络有一样的缺点2.OSI参考模型开放...

2019-03-12 21:33:28 742

原创 Linux系统编程——线程控制(二)

2.用互斥量同步互斥量的作用犹如给某个对象加上一把锁,每次只允许一个线程去访问它。如果想对代码关键部分的访问进行控制,可以在进入这段代码之前锁定一个互斥量,完成操作后再解开它。使用互斥量要用到的基本函数如下:int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *mutexattr);int pthre...

2019-03-11 22:26:33 148

原创 Linux系统编程——线程控制(一)

一 线程的基本概念线程是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描述符和信号处理。操作系统在两个进程间进行切换时,要对前一个进程进行保护现场操作,对后一个进程进行还原现场操作。反复进行上下文切换会带来极大的开销。线程则无需进行上下文切换,因为多个线程共享同一个进程的上下文。多个线程也共享同一个进程的CPU时钟周期,进程的状态并未因线程切换而改变。二线程的实现1.用户...

2019-03-06 14:24:56 466

原创 Linux系统编程——进程间通信(一)

Linux系统主要的进程间通信机制如下:无名管道(Pipe)及命名管道(Named pipe):无名管道可用于具有父子关系进程间的通信;命名管道用于无父子关系的进程之间的通信。无父子关系的进程可将信息发送到某个命名管道中,通过管道名读取信息信号(Signal):进程间的高级通信方式,用于通知其他进程有何种事件发生。此外,进程可以向自身发送信号,还可获得Linux内核发出的信号。报文(Mes...

2019-03-05 21:44:46 647

原创 Linux系统编程——进程控制(三)

三 进程的特殊操作1.获得进程ID进程的ID种类如下:PID:进程编号UID:创建进程的用户信息EUID:创建进程的用户对进程所属可执行文件的操作权限信息GID:创建进程的用户所属组信息EGID:标识进程目前所属用户组PGID:标识进程组信息获得进程的GID:gid_t getgid(void);gid_t getgid(void);获得进程的PID:pid_t g...

2019-03-05 14:06:43 343

原创 重载全局new和delete

程序代码如下所示:#include&lt;cstdio&gt;#include&lt;cstdlib&gt;using namespace std;void* operator new(size_t sz) //sz由编译器传入{ printf("operator new: %d Bytes\n", sz); void* m = malloc(sz); if (!m) ...

2019-03-04 22:17:01 712

原创 Leetcode 387.字符串中的第一个唯一字符

题目描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = “leetcode”返回 0.s = “loveleetcode”,返回 2.注意事项:您可以假定该字符串只包含小写字母。解题思路引入排序字典,统计字符串中各字符出现的次数,随后遍历此字典,找到第一个计数为1的key,返回其在字符串中的下标。若没有计数为1的key,则返回-...

2019-03-04 18:31:34 175

原创 Leetcode 236.二叉树的最近公共祖先

题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,...

2019-03-04 14:11:36 88

原创 Leetcode 112.路径总和

题目描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...

2019-03-04 14:03:06 65

原创 Linux系统编程——进程控制(二)

二 进程的基本操作相关的函数被定义在系统调用库unistd.h中。1.fork系统调用fork系统调用有两个函数,分别是fork()和vfork()函数。可创建一个子进程,调用的一般形式是:pid_t fork(void);pid_t vfork(void);pid_t:用于保存进程PID信息的结构体调用成功时,对父进程返回子进程PID,对子进程返回0。调用失败时返回-1,子进程...

2019-03-04 13:41:43 227

原创 operator->*运算符重载程序分析

程序代码如下所示:#include&lt;iostream&gt;using namespace std;class Dog{public: int run(int i) const { cout &lt;&lt; "run\n"; return i; } int eat(int i) const { cout &lt;&lt; "eat\n"; return i; } int...

2019-03-03 19:47:54 943

原创 Linux系统编程——进程控制(一)

一 进程的基本概念查看进程信息命令ps,参数如下:-e:列出所有进程-f:显示进程全部信息-h:不现实进程标题列出所有进程-l:以长格式显示进程-w:以宽格式显示进程-a:显示终端上所有进程,包括其他用户进程-r:只显示正在运行的进程-x:显示没有控制终端的进程进程的状态和状态转换进程在生存周期中呈现出各种状态及状态的转换,这些信息反映了进程获取系统资源的情况。Linux...

2019-03-02 20:48:09 256

原创 Leetcode 106.从中序与后序遍历序列构造二叉树

题目描述根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题思路由105.从前序与后序遍历序列构造二叉树一题中,得到了一种递归...

2019-03-01 15:27:45 126

空空如也

空空如也

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

TA关注的人

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