自定义博客皮肤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 125

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

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

2020-09-21 09:37:22 141

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

第十一章 系统级I/OUnix 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 124

原创 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 115

原创 剑指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 77

原创 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 118

原创 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 93

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

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

2019-03-12 19:44:59 5354

原创 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 583

原创 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 82

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

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

2018-12-15 23:50:55 77

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

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

2018-12-15 23:43:57 143

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

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

2018-12-15 23:23:47 91

原创 剑指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 116

转载 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 136

原创 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 116

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

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

2018-12-09 08:01:46 106

原创 剑指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 92

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

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

2018-12-09 07:42:30 120

原创 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 125

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

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

2018-12-08 17:20:37 69

原创 Leetcode(22)括号生成

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

2018-12-08 15:54:28 72

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

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

2018-12-08 15:44:46 100

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

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

2018-12-04 06:38:17 85

原创 剑指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 95

原创 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 145

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

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

2018-12-04 05:46:47 148

原创 剑指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 99

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

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

2018-12-03 07:29:54 97

原创 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 107

原创 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 506

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

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:f(1) = 1f(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 90

原创 剑指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 79

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

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

2018-12-01 06:13:04 87

原创 剑指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 76

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

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

2018-11-30 06:11:10 118

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

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

2018-11-29 09:11:32 148

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

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

2018-11-29 06:38:23 343

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

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

2018-11-29 06:25:21 89

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

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

2018-11-28 06:21:06 105

空空如也

空空如也

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

TA关注的人

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