自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

3166375975@的博客

坚持写博客,写自己觉得经典的知识点和程序

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

原创 [LeetCode — 6] Z 字形变换

目录1.题目描述2.解决方案1.题目描述 题目链接:Z 字形变换 将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下: L C I R E T O E S I I G E D H ...

2019-10-17 14:24:35 285

原创 [LeetCode — 5] 最长回文串

目录1.题目描述2.解决方案1.题目描述 题目链接:最长回文串 给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2输入: "cbbd"输出: "bb"2.解决方案 方法一: 动态规划 ...

2019-10-16 16:01:12 330

原创 [LeetCode — 3] 无重复字符的最长字串

目录1.题目描述2.解决方案1.题目描述 题目链接:无重复字符的最长字串 给定一个字符串,请你找出其中不含有重复字符的最长字串的长度。示例1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb" 输出: 1 ...

2019-10-16 13:32:40 284

原创 [LeetCode — 15] 三数之和

目录1.题目描述2.解决方案1.题目描述 题目链接:三树之和 相似题目1:[LeetCode — 16] 最接近的三数之和 相似题目2:[LeetCode — 18] 四数之和给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中...

2019-10-15 13:27:01 277

原创 [LeetCode — 11] 盛最多水的容器

目录1.题目描述2.解决方案1.题目描述 题目链接:盛最多水的容器给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。...

2019-10-14 16:16:41 192

原创 [LeetCode — 26] 删除排序数组中的重复项

目录1.题目描述2.解题思路1.题目描述 题目链接:删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 n...

2019-10-13 23:05:04 196

原创 进程间通信:管道

目录管道管道概述管道接口关闭未使用的管道文件描述符关闭无用的管道写入端关闭无用的管道读取端管道对应的内存去大小shell 管道的实现在 Linux 系统中,有时候需要多个进程相互协作,共同完成某项任务。进程之间或线程之间有时候需要传递消息,有时候需要同步来协调彼此的工作。因此很有必要了解一下Linux 中进程间通信方式。线程在 Linux 中被实现为轻量级...

2019-05-21 16:29:44 1131 1

原创 写在“答案”之前。

北京时间 2019 年 5 月 9 日,休斯顿火箭和金州勇士系列赛第五场终场的那一刻,库里的那一蹲,注定是NBA篮球进程中最经典的画面之一。 那一刻,我不知道应该以怎样的方式去理解,给了我非常大的冲击。王猛写到:哨向那一刻,库里蹲在甲骨文球场中央的那镜头留在我记忆里久久。杜兰特受伤后,他扛着勇士,直到其他人慢慢站出来,他扛到了最后,扛着让球队赢了天王山。当他蹲下时,大口...

2019-05-11 05:34:03 468

原创 关于信号:从它的出生说起吧...

目录信号的生命周期信号的产生硬件异常终端相关的信号nohupsetsiddisown软件事件相关的信号信号的默认处理函数信号的分类传统信号的特点信号的可靠性信号的安装信号的发送killtkill、tgkillraisesigqueue 函数信号与线程的关系线程之间共享信号处理函数线程有独立的阻塞信号掩码私有挂起...

2019-05-05 19:05:47 845

原创 进程控制:状态、调度和优先级

目录进程的状态可运行状态可中断睡眠状态和不可中断睡眠状态睡眠进程和等待队列TASK_KILLABLE 状态TASK_STOPPED 状态和 TASK_TRACED 状态EXIT_ZOMBIE 状态和 EXIT_DEAD 状态进程调度概述普通进程的优先级完全公平调度的实现普通进程的组调度实时进程CPU 的亲和力图片和文章没有关系啦进程的状...

2019-05-02 21:05:31 2367

原创 进程控制:进程的一生

目录进程 ID进程的层次进程组会话进程创建之 forkfork 之后父子进程的内存关系fork 之后父子进程与文件的关系文件描述符复制的内核实现进程创建之 vforkdaemon 进程的创建进程的终止_exit 函数exit 函数return 退出等待子进程僵尸进程等待子进程 ☞ wait()进程等待 ☞ waitpid(...

2019-04-27 17:57:29 942

原创 理解 Linux 线程

目录线程与进程进程 ID 和线程 IDpthread 库接口线程的创建和标识pthread_create 函数参数介绍返回值线程 ID 及进程地址空间布局两类线程 ID 说明进程地址空间线程创建的默认属性线程的退出线程的连接与分离线程的连接为什么要连接退出的线程线程的分离互斥量为什么需要互斥量互斥量的接口互斥量的初始化...

2019-04-20 17:59:48 416

原创 高级 IO

目录IO 简介五种 IO 模型阻塞 IO非阻塞 IO信号驱动 IOIO 多路转接异步 IOIO 多路转接 — select详解 select 系统调用函数参数函数返回值fd_set 结构timeval 结构select 执行过程socket 就绪条件读就绪写就绪异常就绪select 的特点select 的缺点使用...

2019-04-18 20:48:48 654

原创 Linux 下常用工具

目录Linux 编辑器 —vimvim 的模式正常/普通/命令模式插入模式低行模式vim 配置Linux 编译器 —gcc/g++使用 gcc/g++ 的格式预处理编译汇编链接函数库Linux 调试器 — gdbLinux 项目自动化构建工具 — make/MakefileLinux 软件包管理器 — yumLinux 编辑...

2019-04-16 14:41:57 534

原创 Linux 命令收集

目录lspwdcdtouchmkdirrmdirrmmancpmvcat/tacmorelessheadtailfindgrepzip/unziptarfilels对于目录,该命令列出该目录下所有的子目录与文件;对于文件,将列出文件名及其他相关信息。-a :列出目录下的...

2019-04-13 21:26:36 458

原创 C++语言—模板

泛型编程:编写与类型无关的代码,模板是泛型编程的基础,模板分为模板函数和模板类。函数模板函数模板与类型无关,在使用时编译器根据传入的实参帮我们推演出特定类型的函数版本(产生模板特定类型的过程称为模板的实例化)。//函数模板定义格式template<typename T>//template<class T>//typename是用来定义模板参数的关键字,...

2018-10-10 17:10:27 715

原创 网络—网络编程

目录网络编程中的基本概念socket编程接口(API) 简单的UDP网络程序简单的TCP网络程序TCP连接管理网络编程中的基本概念网络通信是网络上两个主机间进程通信,一个叫客户端,一个叫服务端,并且永远是客户端向服务端发起请求。IP地址:IP地址是在IP协议中, 用来标识网络中不同主机的地址。IP协议有两个版本, IPv4和IPv6,对于IPv4来说, IP...

2018-10-08 00:34:03 379

原创 网络—网络通信协议

网络通信协议网络通信过程中,通信环境非常复杂,应对的场景各有不同,导致网络通信中有非常多的协议。数据在网络中传输的格式称为网络通信协议。协议的封装:把复杂的实现过程封装起来,对外提供一个容易使用的接口(方法)供用户使用。协议的分层:按照协议及不同的使用场景,对协议进行了框架性的划分。下面是两个出名的通行协议结构模型:OSI七层模型OSI(Open System Intercon...

2018-10-04 09:34:20 363

原创 数据结构—二叉树相关概念及经典面试题

二叉树概念一棵二叉树是结点的有限集合,该集合或者为空, 或者是由根结点加上两棵分别称为左子树和右子树的二叉树构成二叉树的特点:每个结点最多有两棵子树,即二叉树不存在度大于2的结点 二叉树的子树有左右之分,其子树的次序不能颠倒满二叉树、完全二叉树满二叉树:在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子节点都在同一层上完全二叉树: 如果一棵具有N个结点的二叉...

2018-09-28 10:01:35 1068

原创 数据结构—树形结构

树的概念 由N(N>=0)个节点组成的集合。对N > 1的树,有:有一个特殊的结点,称为根结点,根节点没有前驱结点 除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、 ……、Tm,其中每一个集合Ti(1<= i <= m)又是一棵结构与树类似 的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继因此,树是递归定义的。结...

2018-09-25 23:15:33 7619 1

原创 数据结构—迷宫求解

迷宫:根据迷宫中通路的数量和路的特点,可将迷宫分为三类简单迷宫 多通路迷宫(通路间不带环) 多通路迷宫(通路间带环)不管是哪种迷宫,通常我们要解决的问题是找出通路,通常还得找到最短的那条通路,这里我们先说如何找到一条通路,等这个问题解决之后再说说如何找到最短的那条通路找迷宫通路找迷宫通路需要使用回溯法,找迷宫通路是对回溯法的一个很好的应用,实现回溯的过程用到了数据结构—栈 ...

2018-09-24 21:51:37 3637

原创 数据结构—栈和队列经典面试题

栈和队列面试题:实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间复杂度为O(1) 使用两个栈实现一个队列 使用两个队列实现一个栈 元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为 (4,5,3,2,1) 一个数组实现两个栈(共享栈)实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间复杂度为O...

2018-09-21 17:38:22 8787

原创 数据结构—队列

队列概念 只允许在一端进行插入数据操作,在另一端进行删除数据操作的一种特殊线性表,进行插入操作的一端称为队尾(入队列),进行删除操作的一端称为队头(出队列)队列具有先进先出的特征顺序队列 类型一:队头不动,出队列时队头后所有元素向前移动缺陷:如果出队列操作很多,要搬移大量元素类型二:队头移动,出队列时队头向后移动一个位置如果再有F、G进行入队操作,就会出现假溢出...

2018-09-21 11:59:32 565

原创 数据结构—栈

栈的概念一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除的一端称为栈顶,另一端称为栈底。不含任何元素的栈称为空栈,栈又称为后进先出的线性表。栈特性:后进先出栈功能:将数据从一种序列改变到另一种序列顺序栈顺序栈和顺序表数据成员相同,不同之处:顺序栈的入栈和出栈操作只允 许对当前栈顶进行操作顺序栈所有的操作时间复杂度为O(1) 顺序栈...

2018-09-21 00:48:25 410

原创 数据结构—链表经典面试题

 链表面试题:从尾到头打印单链表 删除一个无头单链表的非尾节点(不能遍历链表) 在无头单链表的一个节点前插入一个节点(不能遍历链表) 单链表实现约瑟夫环(JosephCircle) 逆置/反转单链表 单链表排序(冒泡排序&快速排序) 合并两个有序链表,合并后依然有序 查找单链表的中间节点,要求只能遍历一次链表 查找单链表的倒数第k个节点,要求只能遍历一次链表 删除链...

2018-09-17 12:16:29 520

原创 数据结构—线性表

线性表:n(n >= 0)个数据元素组成的一个有限序列,可以在其任意位置上进行插入和删除操作的线性数据结构 从数据在物理内存存储形式上线性表可分为:顺序表和链表从上图可知:线性表中数据与数据之间存在一对一的关系,即除第一个元素和最后一个元素外,每个元素都有唯一的直接前驱和唯一的直接后继,第一个元素没有前驱,最后一个元素没有后继顺序表:用一段地址连续的存储单元依次存储数...

2018-09-15 23:43:00 255

原创 数据结构—归并排序

当我们要排序的文件太大以至于内存无法一次性装下或者在某些场景中有内存空间限制的时候,我们可以使用外部排序,将数据在外部存储器和内存之间来回交换,以达到排序的目的,这里我们先介绍外部排序算法,体会它面对大量数据时体现出的一种思想——分而治之,即分开去处理的过程。我们接触的大多排序直接是在内存进行的,所以与外部排序有着很强烈的区别,这里说一下它的基本思想是有必要的。例如:给你2G的数据在硬盘上,但...

2018-09-13 17:00:47 1010

原创 C++语言—面向对象之继承详解

类的继承: 我们一直以来接触的函数在一定程度上完成了代码的复用,这里介绍面向对象的重要复用机制—继承继承机制是面向对象程序设计使代码可以复用的重要手段,他允许我们在保持原有类特性的基础上进行扩展,增加功能。这样产生的类,称为派生类。继承呈现了面向对象程序的层次性,体现了从简单到复杂的认知过程继承的简单使用:class Person{public: void Display(...

2018-09-10 11:27:52 2482 6

原创 C/C++语言—动态内存管理

C/C++中程序内存区域划分: C/C++程序内存区域划分 栈:又叫堆栈,存储非静态局部变量、函数参数、 返回值等,栈是可以向下生长的内存映射区:是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内 存,做进程间通信堆:用于程序运行时动态内存分配,堆是可以向上增长的数据段:存储全局数据和静态数据代码段:存储可执行的代码、只读常量 C/C...

2018-09-08 22:07:12 1002

原创 C++语言—static修饰的类成员

首先思考一个问题:如何知道一个类创建了多少个对象?以下两种方式是否可行,为什么?1. 在类中添加一个普通的成员变量进行计数通过下面的知识你会明白,添加的普通变量属于每个具体的对象,不属于整个类,所以它是无法记录一个类创建了多少个对象的2. 使用一个全局变量来计数定义一个全局变量是可以记录一个类创建了多少个对象的,因为它属于整个整个文件,当然也属于整个类了声明为 static 的类...

2018-09-07 21:20:34 839

原创 C++语言—友元函数和友元类

友元函数:友元函数可以直接访问类的私有成员,它是定义在类外的普通函数,不属于任何类, 但需要在类内通过特殊的方式声明,这里特殊的方式指的就是在类内声明时需加上 friend 关键字class Date{ //友元函数的声明 friend ostream& operator <<(ostream& _cout, const Date& d);pu...

2018-09-07 20:09:43 262

原创 C++语言—深入理解构造函数

构造函数体内的赋值: 创建一个类对象时,编译器通过调用构造函数,给对象中的成员变量一个初值class Date{public: //构造函数体内赋值 Date(int year,int month,int day) { _year = year; _month = month; _day = day; }private: int _year; int _mo...

2018-09-07 11:17:46 219

原创 C++语言—类的六个默认成员函数

类的构造函数: 构造函数是一种随着对象创建而自动被引用的共有成员函数,有且仅在对象创建时自动执行一次,它的功能是初始化创建的对象构造函数是特殊的成员函数,其特征如下:函数名与类名相同 无返回值 对象创建时系统自动调用对应的构造函数 构造函数可以重载 构造函数的定义可以在类内,也可以在类外 如果类定义中没有给出构造函数,则C++编译器会自动产生一个缺省的构造函数,只要我们定义了...

2018-09-07 10:05:49 254

原创 C++语言—类的const成员

const修饰普通变量:在C++中,const修饰的变量已经为一个常量,具有宏的属性,即在编译期间,编译器会将const所修饰的变量进行替换。const修饰类成员: const修饰类成员变量时,该成员变量必须在构造函数的初始化列表中初始化 const修饰类成员函数,实际修饰该成员函数隐含的this指针指向的内容,该成员函数中不能对类的任何成员进行修改class Date{pub...

2018-09-06 17:58:35 254

原创 C++语言—初步实现简单的 String 类

这里我实现的 String 类主要写了一下它的构造函数、拷贝构造函数(传统写法和现代写法)、赋值运算符重载(传统写法和现代写法)和析构函数,并且类的成员变量只有一个 _pStr。class String{public: String(const char* pStr = "") :_pStr(new char[strlen(pStr)+1]) { strcpy(_pStr,p...

2018-09-06 17:01:57 272

原创 C++语言—类和对象

类和对象的初步认识:1.类是对象的抽象,而对象是类的具体实例类是抽象的,不占用内存;而对象是具体的,占用存储空间2.面向过程与面向对象C语言是面向过程的,关注的是过程中的数据与方法C++语言是面向对象的,关注的是对象的属性与功能类的引入:在C++中,结构体内不仅可以定义变量,还可以定义函数struct student{public: char _name[2...

2018-09-06 16:14:41 1271

原创 数据结构—堆排序

堆排序堆排是基于堆的一种排序算法,对于堆的了解请点开链接:https://blog.csdn.net/z_x_m_m_q/article/details/82320357(创建、插入、删除) 算法思想:之前的博客写了小堆,由于降序排列是根据小堆性质进行排列的,顺着前面的知识这里我们讨论从大到小的排列首先小堆建好之后堆顶数据是堆中最小的数据,将堆顶元素与最后的一个元素交换位置,这样最...

2018-09-05 10:12:23 362

原创 数据结构—Top K问题

提示:这里解决 top K 问题是基于堆数据结构下的,对这块还有问题的可以点以下链接:https://blog.csdn.net/z_x_m_m_q/article/details/82320357Top K问题:Topk问题是一个经典的海量数据处理问题, 在海量数据中找出出现频率最高的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为Top K问题比如,热搜上每天更...

2018-09-04 22:05:09 1023

原创 数据结构—二叉堆

二叉堆:每个父节点的值都大于等于(或者小于等于)其两个孩子的值,那么就称这种特殊的数据结构为二叉堆二叉堆数据结构是一种数组对象,把它可以看作一棵完全二叉树结构或近似二叉树结构。在逻辑层面二叉堆是一种特殊的树形数据结构,一般用数组存储二叉堆的节点元素,所以在物理层面二叉堆是一个数组二项式堆,斐波纳契堆等其它堆用的较少,一般将二叉堆简称为堆(以下表述中直接说堆了)堆满足的两个特征:...

2018-09-03 11:08:48 586

原创 数据结构-直接选择排序

直接选择排序 算法思想:直接选择排序和直接插入排序有点类似,因为在整个排序过程中都将数据分为有序区和无序区,不同的是直接插入排序是将无序区的第一个元素直接插入到有序区中合适位置以形成一个更大的有序区,刚开始认为有序区的长度为1,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后,刚开始认为它的有序区长度为0。 设待排序序列是有n个数的数组a[n]初始时,数组全为无序区为a...

2018-09-02 00:15:20 6688 1

空空如也

空空如也

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

TA关注的人

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