自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《深入理解计算机系统》 第十三章 并发编程

并发程序(concurrent program) 构造并发程序的方法:进程、I/O多路复用、线程 进程:每个逻辑控制流都是一个进程,由内核来调度和维护。进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显式的进程间通信机制。 I/O多路复用:应用程序在一个进程的上下文中显式地调用他们自己的逻辑流。 线程:运行在一个单一进程上下文中的逻辑流,由内核进行调度。是其他两种方式的混合体,像进程流一样由内核进行调度,而像I/O多路复用流一样共享同一个虚拟地址空间。 13.1基于进程的并发编程 在父进程中接

2020-11-11 13:10:42 172

原创 《深入理解计算机系统》 第十二章 网络编程

12.1客户端-服务器编程模型 客户端-服务器模型中的基本操作是事务(transaction)。 12.2 网络 key word:LAN局域网、以太网、集线器、帧、网桥、路由器、互联网络、适配器(端口)、WAN广域网 12.3 全球IP因特网 TCP/IP协议 12.3.1 IP地址 32位无符号整数 12.3.2 因特网域名 举例:www.baidu.com DNS域名系统 12.3.3 因特网连接 P2P、全双工、 12.4 套接字接口 12.4.1 套接字地址结构 12.4.2 socket

2020-09-21 09:37:22 203

原创 《深入理解计算机系统》 十一章 系统级I/O

第十一章 系统级I/O Unix IO是系统操作不可或缺的一部分。在进程的创建和执行中扮演着关键的角色。 11.1 Unix I/O 主要功能:打开文件、改变当前的文件位置、读写文件、关闭文件。 11.2 打开和关闭文件 int open(char *filename,int flags,mode_t mode); 返回值为文件描述符,应用程序需要操作该描述符。 flags指明进程打算如何访问文件:O_RDONLY只读,O_WRONLY致只写,O_RDWR读写,同时flag可以或上更多指示,如O_CREAT

2020-09-20 21:08:58 176

原创 Leetcode 752打开转盘锁

题目 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。 锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。 列表 deadends 包含了一组死亡数字,一旦拨...

2019-06-25 14:55:36 148

原创 剑指Offer(19)包含min函数的栈

题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 代码 class Solution { public: void push(int value) { datestack.push(value); if(minstack.empty()) minstack.push(...

2019-04-08 07:28:08 110

原创 Leetcode(107)二叉树的层次遍历2

题目描述 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] class Solution { p...

2019-04-08 07:22:00 160

原创 Leetcode(104)二叉树的最大深度

题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回它的最大深度 3 。 代码 class Solution { public: int maxDepth(TreeNode* root...

2019-04-08 07:16:11 132

原创 PCL点云数据库——第一篇(开发环境的搭建)

概述 点云数据库(Point Cloud Libary,PCL)是一个专门用来处理三维点云的跨平台开源库,支持Windows,Linux,Android,Mac OS X等平台。涉及点云处理得大量通用算法,包括点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等基础模块,以及人体骨骼识别提取、动作跟踪识别等应用。 安装 目前笔者只使用Windows平台上的PCL点云开发,所以...

2019-03-12 19:44:59 5524

原创 Leetcode(69) x的平方根

题目描述 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。 解题思路 直接循环判断,二分法查找。 class Solution { pu...

2019-02-27 08:54:54 877

原创 Leetcde(67)二进制求和

题目描述 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入: a = “11”, b = “1” 输出: “100” 示例 2: 输入: a = “1010”, b = “1011” 输出: “10101” 解题思路 每位转十进制然后相加吧 代码 class Solution { public: string addBina...

2019-02-27 08:30:37 112

原创 剑指offer(18) 二叉树的镜像

题目描述 *操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 * 解题思路 是一个递归的思路,二叉树可以转换为最小的子树结构,然后对最小的子树进行镜像即可。 class Solution { public: void Mirror(TreeNode *pRoot) { if(pRoot==NULL){ retur...

2018-12-15 23:50:55 106

原创 Leetcode(30) 与所有单词相关联的字串

题目描述 给定一个字符串 s 和一些长度相同的单词 words。在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。 示例 1: 输入: s = “barfoothefoobarman”, words = [“foo”,“bar”] 输出: [0,9] 解释: 从索引 0 ...

2018-12-15 23:43:57 204

转载 Leetcode(10) 正则表达式匹配

题目描述 给定一个字符串 (s) 和一个字符模式 §。实现支持 ‘.’ 和 '’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符。 ‘’ 匹配零个或多个前面的元素。 匹配应该覆盖整个字符串 (s) ,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 。 示例 1: 输入: s = “aa” p = “a” 输出...

2018-12-15 23:23:47 129

原创 剑指offer(17)数的子结构

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解题思路 class Solution { bool isSubtree(TreeNode* pRootA, TreeNode* pRootB) { if (pRootB == NULL) return true; if (pRootA == NULL) r...

2018-12-11 13:58:07 165

转载 Leetcode(29)两数相除

题目描述 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 示例 1: 输入: dividend = 10, divisor = 3 输出: 3 示例 2: 输入: dividend = 7, divisor = -3 输出: -2 解题思路 基本思路使用移位和加...

2018-12-11 12:50:06 172

原创 Leetcode(25) K个一组翻转链表

题目描述 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3->5 当 k = 3 时,应当返回: 3->2-&gt...

2018-12-11 12:31:41 143

原创 剑指offer(16)合并两个排序的链表

题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路 新建一个链表,存储合并后的链表,返回 class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListNode* res=new ListNode(0)...

2018-12-09 08:01:46 137

原创 剑指offer(15)反转链表

题目描述 输入一个链表,反转链表后,输出新链表的表头。 解题思路 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* ...

2018-12-09 07:53:42 134

原创 Leetcode(24)两两交换链表中的节点

题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 解题思路 这个就是个很简单的判断啊什么的,主要是链表的相邻节点交换的时候要注意一下 /** * Definiti...

2018-12-09 07:42:30 163

原创 Leetcode(23)合并K个排序链表

题目描述 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 解题思路 转化为两两链表合成问题 /** * Definition for singly-linked list. *...

2018-12-09 07:34:48 163

原创 剑指offer(14)链表中倒数第k个结点

题目描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路 输出的是 倒数第k个链表,可以参考Leetcode删除链表倒数节点的那个算法题 一共有两种解法,一是两遍遍历的,二是一遍遍历的。 两次遍历的思路就是先遍历一遍 求出链表长度,然后在遍历,输出N-k+1的节点。这道题靠鲁棒性,需要考虑各种情况,比如可能不存在倒数第k个结点。 代码如下 /* struct ListNode { int ...

2018-12-08 17:20:37 105

原创 Leetcode(22)括号生成

题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ] 解题思路 回溯法 只有在我们知道序列仍然保持有效时才添加 ‘(’ or ‘)’,而不是像方法一那样每次添加。我们可以通过跟踪到目前为止放置的左括号和右括号...

2018-12-08 15:54:28 113

原创 Leetcode(19)删除链表的倒数第N个节点

题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 解题思路 方法一、遍历两次链表 删除倒数n的节点,首先需要知道整个链表的长...

2018-12-08 15:44:46 141

原创 剑指offer(13) 调整数组顺序使奇数位于偶数前面

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解题思路 代码的完整性 这个题呢,需要调整奇偶数的顺序,而且原先的相对位置不变。 头指针从左向右遍历,直至遇到第一个偶数,将偶数取出,尾插到数组中。 class Solution { public: void r...

2018-12-04 06:38:17 120

原创 剑指offer(12)数值的整数次方

题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 解题思路 代码的完整性:考虑到各种意外的情况 这里面的特殊情况主要是,base为负数,exponent为负数,base为0, exponent为0; class Solution { public: double Power(double base, int expon...

2018-12-04 06:17:25 122

原创 Leetcode(18)四数之和

题目描述 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意: 答案中不可以包含重复的四元组。 示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求的四元组集合为...

2018-12-04 06:06:32 201

转载 Leetcode(17)电话号码的字母组合

题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:“23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. 解题思路 考查要点:字符串 回溯算法 回溯算法:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试...

2018-12-04 05:46:47 205

原创 剑指offer(11)二进制中1的个数

题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解题思路 一个数,自身和自身减一与运算,会将右边最后一个不为1的变为0,一直循环,直到变为0; class Solution { public: int NumberOf1(int n) { int count=0; while(n!=0) { ...

2018-12-03 16:34:12 133

原创 剑指offer(10) 矩形覆盖

题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?* 解题思路 小矩形可以横放可以竖放,则第一步一共有两种方法,竖放或横放。在竖放之后的话,涉及到的就是用n-1个21的小矩形覆盖2(n-1)的大矩形的方法。如果要是横放的话,则横放的下面必须有一个横放的矩形,所以就是用n-2个21的小矩形覆盖2(n-2)的大矩形的方法...

2018-12-03 07:29:54 133

原创 Leetcode(16)最接近的三数之和

题目描述 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 解题思路 与三数之和类似,只不过是求...

2018-12-03 07:13:22 141

原创 Leetcode(15)三数之和

题目描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 解题思路 以前做过两数之和的...

2018-12-03 06:57:13 577

原创 剑指offer(9) 变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路 关于本题,前提是n个台阶会有一次n阶的跳法。分析如下: f(1) = 1 f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数。 f(3) = f(3-1) + f(3-2) + f(3-3) … f(n) = f(...

2018-12-01 06:26:17 119

原创 剑指offer(8) 跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解题思路 a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1); b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2) c.由a\b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2) ...

2018-12-01 06:21:13 111

原创 Leetcode(12)整数转罗马数字

题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的...

2018-12-01 06:13:04 119

原创 剑指offer(7) 斐波那契数列

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 解题思路 大概最直接的思路就是一直循环下来吧。 class Solution { public: int Fibonacci(int n) { int a1=0,a2=1,a=1; if(n==0) return 0; ...

2018-11-30 06:26:41 97

原创 Leetcode(11)盛最多水的容器

题目描述 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。 解题思路 看到这个想到的也是两种,一种是直接暴力搜索法,便利所有的可能,第二种是双指针发。 ...

2018-11-30 06:11:10 172

原创 数据结构与算法(2) 线性表(1)

线性表:由零个或多个数据元素组成的有限序列。第一个元素无前驱,最后一个元素无后继,其他元素都只有一个前驱和后继。 数据类型:指一组性质相同的值的集合及定义在此集合上的一些操作的总称。 C中,数据类型分为两类,原子类型+结构类型 抽象:抽取事物具有的普遍性的本职。 抽象数据类型(Abstract Data Type,ADT)是指一个数学模型及定义在该模型上的一组操作。数据类型+操作 抽象数据类型的标...

2018-11-29 09:11:32 220

原创 剑指offer(6)旋转数组的最小数字

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路 就很简单,首先判断数组为零,其次依次遍历,如果遇到前一个小于等于后一个,很正常;如果遇到前一个大于后一...

2018-11-29 06:38:23 407

原创 Leetcode(8)字符串转换整数(atoi)

题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字...

2018-11-29 06:25:21 111

原创 剑指offer(5)用两个栈实现队列

题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路 需要用栈来模拟队列的Push和Pop操作。 要知道,栈是先进后出,而队列是先进先出,所以用栈实现队列的时候,需要两个栈,进栈可以直接进栈就OK,但是需要首先将两个栈合为一个栈,但是出栈的话,需要将原先一个栈中的元素都出栈到另一个栈中,这样才能取到第一个进栈的元素。 Push:将元素进栈A Po...

2018-11-28 06:21:06 138

空空如也

空空如也

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

TA关注的人

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