自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 爱奇艺校招

奇异数定义一个奇异数:1. 该数至少是两位的2. 该数的末尾两位是相同的问从L到R之间有多少个奇异数,包括L和R。这个题目楼主开始用暴力求解只过了百分之六十,后来想出来低复杂度的时间快到了。这个题目其实和从1到n中1出现的次数很相似,只是这道题目问从1到n中末尾00,11,22,33…99出现的次数而已。因此可以计算从0到L之间奇异数出现的次数减去0到R之间奇异数出现的次数。比

2017-09-10 22:10:37 782

原创 重排整数

时间限制:1秒空间限制:100768K小易有一个长度为N的正整数数列A = {A[1], A[2], A[3]..., A[N]}。牛博士给小易出了一个难题:对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数。小易现在需要判断一个数列是否可以重排之后满足牛博士的要求。 输入描述:输入的第一行为数列的个数t(1

2017-09-09 22:25:54 1197

原创 已知先序遍历和中序遍历

首先前序遍历的第一个节点就是根节点,然后根据根节点把中序遍历分成两部分,左边部分是左子树的中序遍历,右边是右子树的中序遍历,然后根据左子树的中序遍历在谦虚遍历序列中找到左子树的前序遍历,右子树的前序遍历,然后重复上述过程,建立二叉树。#include#include#includeusing namespace std;struct Node{ char ch; No

2017-09-07 11:05:44 1241

原创 只用2GB内在20亿个整数里中找到出现次数最多的数

题目有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数,内存限制为2GB。解答:想要在很多整数中找到初夏次数最多的数,通常的做法是用哈希表对出现的每一个数据做词频统计,哈希表的key是某一个整数,value是这个词出现的次数。就本题来说,一共20亿个整数,用32位int型是完全足以表示的,32位int最大数据为2147483647,所以并不会溢出。因为一个哈希表需要的

2017-09-05 10:13:37 3408

原创 组合模式

我们先看一个典型的UNIX文件系统,大家都知道UNIX文件系统采用的是多级索引结构,本图只给出了两级构架,其中直接物理块里存放的是文件的直接地址,而次级索引表指向一个和顶级索引表类的东西,这样就成了一个树形的构架,组合成了一个文件系统。组合模式,将对象组合成树形结构以表示‘部分-整体’的层次构架。组合模式使得用户对单个对象和组合对象的使用具有一致性。Component为

2017-09-03 15:56:12 204

原创 装饰模式

首先来看一个场景,你今天和一个爱登山的MM约会了,你需穿一套登山装,明天你和一个爱运动的妹妹约会,你需要穿一套运动服,后天你和一个比较喜欢绅士的妹纸约会,你就需要西装革履,但是无论你穿什么,你还是你,唯一的你只是传了不同的衣服而已,仅仅是在装饰自己。装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。Component是定

2017-09-03 11:24:08 211

原创 中介者模式

中介者嘛,大家都应该知道是什么意思。比如联合国,其实就是一个中介机构,为多个国家提供一个交流平台,比如美帝说“伊拉克你要在搞核武器,我就揍你”,但是和伊拉克言语不通,需要联合国来传达,同样伊拉克发布的信息需要联合国传达给美国。这种模式就是中介者模式。中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,因而使其耦合松散,而且可以独立地改变它们

2017-09-02 21:17:51 206

原创 职责链模式

大家可能去政府办过事,遇到一个效率不高的政府时,你可能就要头大了,A部门说你去B部门,B部门说你去C部门,C部门说你去B部门,然后你就头大了,不知道去哪里办理。再看另外一种情况,当地开发商可能要买一万亩的地,先去县里审批,县里一看太大了,审批权限不够,告诉你去市里审批,市里一看权限不够,告诉你去省里审批,省里一看权限不够,没办法啦,就去国土资源部审批吧,就像一个链条,当它发现自己的权限或能力不够的

2017-09-02 17:07:24 219

原创 原型模式

校招季又到了,大家都会去纷纷去投简历,投简历的时候你有没有一份一份的写呢,估计你是不会这么干的,你会拿一份模板填上自己的信息,发给A公司,然后B公司来了,你咋办呢,再把那个模板填一遍?你是不是傻,其实发给A公司和B公司的简历都差不多,那就好办了,把A简历copy一份,然后改改不就好了,但是这两份简历的原型都是一样的。原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些

2017-09-02 15:01:40 196

原创 享元模式

首先来看一个情景,我们在写文档的时候,有很多的字,但是这些字难道真的一个一个独立的对像吗?如果真的是一个一个独立真实的对象,那么内存就会爆掉的。大家可能听说过字库,我们看到的字都是字库里面的,每个显示的字都是字库里面的,每个字在字库里只会有一个对象,那么就意味着文档里的相同的字都会指向同一个对象,这样的好处是什么呢?可以节省大量的资源。享元模式(Flyweight),运用共享技术有效地支持大量

2017-09-02 11:10:37 206

原创 外观模式

炒过股票的可能知道中美股市的不同,中国股市散户为主,美国股市以大型基金机构为主。个人炒股由于专业知识不够,而且还要不断的关注每个股票,不过最终亏本的还是很多的,但是在美国,散户可以把钱给基金,大型基金有专业的知识,管理的股票比较多,最终多数能做到盈利,散户也可以获得相应的收益。从这个例子可以看到,由于散户和股票联系太多,不利于操作,耦合度过高,但是如果把钱给基金,就只有两个动作,给钱给基金,收回收

2017-09-01 21:13:50 167

原创 适配器模式

大家知道,输电线用的是高压电,家庭照明使用的220V低压电,那怎么办呢,大家都知道了,使用变压器,其实也可叫适配器。适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于不兼容而不能一起工作的那些类可以一起工作。适配器模式主要解决的问题:东西在你面前,却不同使用,短时间又无法改造他,于是就需要想办法适配它。在软件开发中,也就是系统的数据和行为都正确,但接口

2017-09-01 20:10:22 286

原创 模板

其实这个模式,在C++的学习里已经接触过了,比如两个STL里面的栈,里面对栈的一些操作,无论栈里面存放的是整数,还是字符,其实操作都是一样的,因此可以使用一个模板来实现,避免了重复的代码。我们开始写冒泡机排序的模板,首先无论是给整数,还是浮点数,还是字符,冒泡排序的机制都是一样的,把这个数和它后面的数进行比较,不满足条件就交换,而子类只需要完成交换和比较的实现就可以了。#i

2017-09-01 16:42:28 191

原创 命令模式

想象一个场景,你是一个烧烤店的老板,卖烤鸡翅考羊肉,来了一群客人来点菜,模式一,直接给烧烤师傅发命令让他考鸡翅和烤羊肉,这样做简单粗暴,但是问题来了一旦人一多,师傅就很容易出错。实际上,一个店里都有一个服务员,客人都是直接问服务员,然后服务员给师傅发命令,这样做,提高了效率,师傅只负责烧烤,不负责其他的。很容易发现,第二种发出命令(服务员)和执行命令(执行命令)的责任分开。       命令模

2017-09-01 14:50:00 203

原创 建造者模式

相信大家都吃过中餐和KFC,这两种东西有什么区别呢?你吃一万个师傅炒出来的酸辣土豆丝可能有一万种味道,但是你吃一万家KFC大概会有一种味道。为什么呢,因为一万个师傅某个师傅可能忘记放盐了,另一个忘记放醋了,但是KFC是一套标准化流程,所以出来就是一个味道。那么怎么才能将中餐变成一个味道呢?那就是标准化流程,否者不让出厂。在软件设计中有什么应用场景呢?比如你在电脑上玩极品飞车游戏,每一关地图都会

2017-09-01 10:10:12 160

原创 代理模式

媒婆这个职业大多人可能都知道,媒婆是干什么的呢?当你找MM时,你需要向多个MM发送同样的问题,你多高,你喜欢什么,但是你可能很忙没有时间怎么办呢?那就找个媒婆替你自己去问。#include#includeusing namespace std;class Girl//追求的对象{private: string name;public: Girl(string _name

2017-08-30 14:51:11 202

原创 工厂模式

接着上文简单工厂模式的问题,简单工厂模式的最大优点是工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。比如你想产生加操作,直接把加号给工厂,工厂就产生了加类的产品。但是如果要添加新功能,比如求M数的N次方,就需要增加case分支,因此就违背了开放-封闭原则。什么叫开放封闭原则呢?开放:也就是该模块的行为是能够被扩展的,当应用程序的需求

2017-08-30 11:21:35 169

原创 简单工厂模式

问题:现在实现一个计算器功能,输入两个数和操作符,求两个数操作之后的结果。于是可以有这样一份代码:switch (ch) { case '+': ... }改进:使用面向对象的思想,让操作和实现分离,从而使得程序更加灵活,容易修改,并且易于复用。设计出这样的一个类:class operation{public: int getresult(int a, int

2017-08-30 10:47:12 207

原创 抽象工厂模式

问题来源:假设有这样一款游戏,游戏有等级,分别为初级,中级,高级甚至有BT级。假设也是过关的游戏,每个关卡都有一些怪物(monster)守着,玩家要把这些怪物干掉才可以过关。作为开发者,我们就不得不创建怪物的类,然后初级怪物、中级怪物等都继承自怪物类(当然不同种类的则需要另创建类,但是模式相同)。在每个关卡,我们都要创建怪物的实例,例如初级就创建初级怪物(有很多种类)、中级创建中级怪物等。可以想象

2017-08-29 21:27:33 259

原创 策略模式

策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,但是不会影响到使用算法的客户。策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合,策略模式依赖于多态。设计步骤:1. 策略的抽象类(纯虚基类),起到接口的作用,抽象类的指针可以访问所有子对象。2. 实现

2017-08-29 20:03:50 187

原创 备忘录模式

备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储Originator的哪些内部

2017-08-29 17:50:39 168

原创 中序表达式转后缀表达式

中缀表达式X=A+B*(C-(D+F))/E转后缀表达式之后是什么?ABCDF+-*E/+ABDF+C-*E/+ABDF+C*-E/+ABDF+C*-E+/中缀表达式转后缀表达式的方法: 1.遇到操作数:直接输出(添加到后缀表达式中) 2.栈为空时,遇到运算符,直接入栈 3.遇到左括号:将其入栈 4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左

2017-08-26 23:03:50 426

原创 地下迷宫

题目描述小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫。为了让问题简单,假设这是一个n*m的格子迷宫,迷宫每个位置为0或者1,0代表这个位置有障碍物,小青蛙达到不了这个位置;1代表小青蛙可以达到的位置。小青蛙初始在(0,0)位置,地下迷宫的出口在(0,m-1)(保证这两个位置都是1,并且保证一定有起点到终点可达的路径),小青蛙在迷宫中水平移动一个单位距离需

2017-08-18 20:27:52 575

原创 内存管理

内存管理:内存管理就是对内存构架进行管理,使程序在内存构架的任何一个层次上的存放对于用户来说是一样的。  内存管理目标:1.       地址保护,一个程序不能访问另一个程序地址空间。2.       地址独立:程序发出的地址应该与物理主存地址之间无关。进程的地址空间:逻辑地址(相对地址,虚拟地址):      用户经过编译汇编后形成目标代码,目标代码通常采

2017-08-15 14:08:57 239

原创 疯狂对列

疯狂队列时间限制:1秒空间限制:32768K小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大

2017-08-12 20:18:42 534

原创 LeetCode练习中等卷

sum-root-to-leaf-numbersgiven a binary tree containing digits from0-9only, each root-to-leaf path could represent a number.An example is the root-to-leaf path1->2->3which represents the number12

2017-08-12 16:57:17 269

原创 shell学习笔记三

cat用法 1. 读取文件内容:cat file2. 将输入文件的内容和标准输入拼接在一起,方法如下:echo 'Text through stdin' | cat - temp.txt在上面的代码中,- 被作为来自stdin文本的文件名。3. 压缩文件空白行:cat -s temp.txt #将文本中的多个空行压缩成单个cat temp.txt | tr -s '\n

2017-08-11 11:45:14 208

原创 shell学习笔记二

键盘读入字符从输入中读取n个字符并存入变量variable_name:read –n number_of_chars variable_name例如:$ read –n 2 var$ echo $var用不回显得方法读取密码:read –s var在特定时限内读取输入:read -t timeout var例如 read –t 2 var用界定符结束输入

2017-08-10 17:44:30 167

原创 shell学习笔记一

第一章1.1 简介在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。Shell脚本通常是以一个#!起始的文本文件,如下所示:#! /bin/bash其中#!(通常被称为shebang声明)被置于命令解释前之前(注:当只有#时,被解释为注

2017-08-10 16:25:28 424

原创 网易校招

题目描述小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11.现在给出一个N,需要求出 f(1) + f(2) + f(3).......f(N)例如: N = 7 f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1

2017-08-10 13:54:22 479

原创 腾讯2017暑期实习生编程题

构造回文串给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。示例1输入abcdagoogle输出22#include#incl

2017-08-09 22:04:29 185

原创 数字和为sum的方法数

题目描述给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。输入描述:输入为两行:第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)第二行为n个正整数A[i](32位整数),以空格隔开。输出描述:输出所求的方案数示例

2017-08-08 17:15:03 350

原创 末尾0的个数

题目描述输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2输入描述:输入为一行,n(1 ≤ n ≤ 1000)输出描述:输出一个整数,即题目所求示例1输入10输出2思路:因为只有2和5相乘才会有0的出现。#include#include#includeusing names

2017-08-08 16:18:30 251

原创 解救小易

题目描述有一片1000*1000的草地,小易初始站在(1,1)(最左上角的位置)。小易在每一秒会横向或者纵向移动到相邻的草地上吃草(小易不会走出边界)。大反派超超想去捕捉可爱的小易,他手里有n个陷阱。第i个陷阱被安置在横坐标为xi ,纵坐标为yi 的位置上,小易一旦走入一个陷阱,将会被超超捕捉。你为了去解救小易,需要知道小易最少多少秒可能会走入一个陷阱,从而提前解救小易。输入描述:第一

2017-08-08 13:23:30 347

原创 数串

题目描述设有n个正整数,将他们连接成一排,组成一个最大的多位整数。如:n=3时,3个整数13,312,343,连成的最大整数为34331213。如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。输入描述:有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N输出描述:每组数据输出一个表示最大的整数。示例1输入212 1

2017-08-08 11:06:39 346

原创 藏宝图

题目描述牛牛拿到了一个藏宝图,顺着藏宝图的指示,牛牛发现了一个藏宝盒,藏宝盒上有一个机关,机关每次会显示两个字符串 s 和 t,根据古老的传说,牛牛需要每次都回答 t 是否是 s 的子序列。注意,子序列不要求在原字符串中是连续的,例如串 abc,它的子序列就有 {空串, a, b, c, ab, ac, bc, abc} 8 种。输入描述:每个输入包含一个测试用例。每个测试用例包含两行

2017-08-08 10:06:34 208

原创 System V共享内存

头文件#include#includeintshmget(key_t key,size_t size,int shmflg)功能:用来创建共享内存参数:a)        key:这个共享内存段名字b)       size:共享内存大小c)        shmflg:由几个权限标志构成,他们的用法和创建文件时使用的model模式标志是一样的返回值:成

2017-08-07 19:42:26 247

原创 共享内存

共享内存区是最快的IPC形式,一旦这样的内存映射到共享他的进程的地址空间,这些进程间的数据传递就不在涉及到内核,换句说就是进程不在通过执行进入到内核的系统调用来传递彼此的数据。void *mmap(void *addr,size_t len, int prot,int flags, int fd,off_t offset);功能:将文件或者设备空间映射到共享

2017-08-07 19:13:27 273

原创 进程通信值pipe管道

1. 基本概念管道是一种把两个进程之间的标准输入和标准输出连接起来的机制。管道是一种历史悠久的进程间的通信的方法,自从unix操作系统诞生之初,管道就存在了。进程创建管道,每次创建两个文件描述符来操作管道。其中一个队管道进行写操作,另一个描述符对文件进行读操作。下图显示了管道如何将两个进程通过内核连接起来的状态。管道是半双工的,只能由一端发一端接收,因此如果要实现全双工通信,必须要

2017-08-07 15:24:11 198

原创 死锁与哲学家就餐问题

死锁:死锁是指多个资源之间互相等待对方的资源,而在得到对方的资源之前又不释放自己的资源,这样,造成循环等待的一种现象,如果所有进程都在互相等待一个不可能发生的事件,则进程就死锁了。死锁产生的必要条件:1. 互斥条件:进程对资源进行排他性使用,即在一段时间内对某资源仅为一个进程所占用2. 请求和保持条件:当进程因请求资源而阻塞时,对已获得得资源保持不放3. 不可剥夺条件:进程已获得得

2017-08-07 14:18:49 1610 1

C++编程思想

该书详细的介绍了C++的基本语法,详细生动的详解了面向对象的思想在实现一个程序时的使用。

2014-11-04

空空如也

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

TA关注的人

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