自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 堆和栈的区别

一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(stati

2017-06-04 21:19:43 368

原创 HDU 2549 壮志难酬

壮志难酬Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12541    Accepted Submission(s): 4166Problem Description话说MCA山上各路豪杰均出山抗敌,去年曾

2017-06-04 21:19:15 322

转载 1347 旋转字符串

1347 旋转字符串基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题S[0...n-1]是一个长度为n的字符串,定义旋转函数Left(S)=S[1…n-1]+S[0].比如S=”abcd”,Left(S)=”bcda”.一个串是对串当且仅当这个串长度为偶数,前半段和后半段一样。比如”abcabc”是对串,”aabbcc”则不是。现在问题是给定

2017-06-04 21:15:46 443

原创 1305 Pairwise Sum and Divide

1305 Pairwise Sum and Divide题目来源: HackerRank基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:fun(A)    sum = 0    for i = 1 to A.length        for j = i

2017-06-04 21:15:07 264

原创 1284 2 3 5 7的倍数

分析:此题是典型的容斥原理题,一开始理解错误,写成了丑数题,反正一直超时,后来才发现;要求不是2,3,5,7的倍数的个数,可以先求出2,3,5,7的个数,之后通过n减去2,3,5,7的倍数的个数可求得不是2,3,5,7的倍数的个数;而要知道2,3,5,7的倍数的个数,只需要分别知道2的倍数个数,3的倍数个数,5的倍数个数,7的倍数的个数,之后通过容斥原理(先不考虑重叠的情况

2017-06-04 21:14:36 333

原创 Humble Numbers(丑数) 超详解!

给定一个素数集合 S = { p[1],p[2],...,p[k] },大于 1 且素因子都属于 S 的数我们成为丑数(Humble Numbers or Ugly Numbers),记第 n 大的丑数为 h[n]。算法 1:  一种最容易想到的方法当然就是从 2 开始一个一个的判断一个数是否为丑数。这种方法的复杂度约为 O( k * h[n]),铁定超时(如果你这样做而没有超时,请跟 t

2017-06-04 21:13:48 1092 1

原创 容斥原理

容斥原理 对容斥原理的描述 容斥原理是一种重要的组合数学方法,可以让你求解任意大小的集合,或者计算复合事件的概率。 描述        容斥原理可以描述如下:          要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的部分,再加回所有三个集合相交的部分,再减去所有四个集合相交的

2017-06-04 21:13:21 492

转载 1283 最小周长

1283 最小周长题目来源: Codility基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题一个矩形的面积为S,已知该矩形的边长都是整数,求所有满足条件的矩形中,周长的最小值。例如:S = 24,那么有{1 24} {2 12} {3 8} {4 6}这4种矩形,其中{4 6}的周长最小,为20。Input输入1个数S(1 

2017-06-04 21:12:49 284

原创 零基础学贪心算法

本文在写作过程中参考了大量资料,不能一一列举,还请见谅。贪心算法的定义:贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。解题的一般步骤是:1.建立数学模

2017-06-04 21:12:10 529

原创 Codeforces 591B Rebranding

B. Rebrandingtime limit per test:2 secondsmemory limit per test:256 megabytesinput:standard inputoutput:standard outputThe name of one small but proud corporation consists of n lowercase

2017-06-04 21:11:42 254

原创 HDU 1039 Easier Done Than Said?

Easier Done Than Said?Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12751    Accepted Submission(s): 6165Problem DescriptionPa

2017-06-04 21:11:01 230

转载 Codeforces 777C Alyona and Spreadsheet

C. Alyona and Spreadsheettime limit per test:1 secondmemory limit per test:256 megabytesinput:standard inputoutput:standard outputDuring the lesson small girl Alyona works with one famou

2017-06-04 21:10:33 345

原创 零基础学并查集算法

并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判

2017-06-04 21:09:58 351

原创 POJ 2492 A Bug's Life

A Bug's LifeTime Limit: 10000MS Memory Limit: 65536KTotal Submissions: 35756 Accepted: 11730DescriptionBackground Professor Hopper is researching the sexual beh

2017-06-04 21:09:22 170

原创 1381 硬币游戏

1381 硬币游戏基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题有一个简单但是很有趣的游戏。在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平行线(如下图所示)。两条相邻平行线之间的距离是1,硬币的半径是R,然后我们来抛硬币到桌子上,抛下之后硬币有时候会和一些直线相交(相切的情况也算是相交),有时候不会。请你来计算一下抛一次硬币之后,该

2017-06-04 21:08:52 214

原创 1344 走格子

1344 走格子基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题有编号1-n的n个格子,机器人从1号格子顺序向后走,一直走到n号格子,并需要从n号格子走出去。机器人有一个初始能量,每个格子对应一个整数A[i],表示这个格子的能量值。如果A[i] > 0,机器人走到这个格子能够获取A[i]个能量,如果A[i] 例如:n = 5。{1,-2,-1,3

2017-06-04 21:08:18 332

原创 算法--枚举策略

注:转载请注明:http://www.cnblogs.com/ECJTUACM-873284962/枚举法的基本思想枚举法的基本思想是根据提出的问题枚举所有可能状态,并用问题给定的条件检验哪些是需要的,哪些是不需要的。能使命题成立,即为其解。枚举结构:循环+判断语句。 枚举法的条件虽然枚举法本质上属于搜索策略,但是它与后面讲的回溯法有所不同。因为适用枚举法求解的问题

2017-06-04 21:07:37 463

原创 POJ 1012 Joseph

JosephTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 53862 Accepted: 20551DescriptionThe Joseph's problem is notoriously known. For those who are not f

2017-06-04 21:07:08 202

转载 关于MySQL建表对DML的影响【转】

本文来自这里今天一位同学问到线上曾经碰到过连续建表,导致阻塞普通的insert、update等。不过也没有保留现场。因此有疑问为什么建表会影响DML?分析         首先这个现象不是在所有场景都会碰到(否则MySQL的用户们早就跳起来了)。一来建表这个操作本身很快,只涉及到写表定义文件和初始化表空间。中间涉及到redo和undo的操作也很少(这里只讨论Inno

2017-06-04 21:06:12 186

原创 前端构建工具gulp

前段时间做一个项目,试着用gulp来构建前端代码。今天简单总结了一下:一:安装gulp环境  1. 安装node     在node官方文档下载匹配的版本  我下载的是如下图的版本。http://nodejs.cn/download/      下载好以后, 可以一直点击下一步,进行默认安装    安装好以后,在控制台输入cmd,打开命令提示

2017-06-04 21:04:58 488

原创 深入理解JAVA I/O系列四:RandomAccessFile

一、简述 这个是JDK上的截图,我们可以看到它的父类是Object,没有继承字节流、字符流家族中任何一个类。并且它实现了DataInput、DataOutput这两个接口,也就意味着这个类既可以读也可以写。二、存在的意义1、是JAVA I/O流体系中功能最丰富的文件内容访问类,它提供了众多方法来访问文件内容。2、由于可以自由访问文件的任意位置,所以如果需要访问文

2017-06-01 22:22:18 162

原创 深入理解JAVA I/O系列五:对象序列化

序列化对象序列化的目标是将对象保存到磁盘中,或者允许在网络中直接传输对象。对象序列化机制允许把内存中的JAVA对象转换成跟平台无关的二进制流,从而允许将这种二进制流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点,其他程序一旦获得了这种二进制流,都可以讲二进制流恢复成原来的JAVA对象。序列化为何存在我们知道当虚拟机停止运行之后,内存中的对象就会消失;另外一种情况

2017-06-01 22:21:50 165

原创 深入理解JAVA集合系列二:ConcurrentHashMap源码解读

HashMap和Hashtable的区别在正式开始这篇文章的主题之前,我们先来比较下HashMap和Hashtable之间的差异点:1、Hashtable是线程安全的,它对外提供的所有方法都是都使用了synchronized,是同步的,而HashMap是非线程安全的。2、Hashtable不允许value为空,否则会抛出空指针异常; 而HashMap中key、value都可

2017-06-01 22:20:52 132

原创 深入理解JAVA集合系列三:HashMap的死循环解读

由于在公司项目中偶尔会遇到HashMap死循环造成CPU100%,重启后问题消失,隔一段时间又会反复出现。今天在这里来仔细剖析下多线程情况下HashMap所带来的问题:1、多线程put操作后,get操作导致死循环。2、多线程put非null元素后,get操作得到null值。3、多线程put操作,导致元素丢失。死循环场景重现下面我用一段简单的DEMO模拟HashM

2017-06-01 22:19:35 145

原创 深入理解JAVA集合系列四:ArrayList源码解读

在开始本章内容之前,这里先简单介绍下List的相关内容。List的简单介绍有序的collection,用户可以对列表中每个元素的插入位置进行精确的控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。列表通常允许重复的元素,且允许null元素的存放。ArrayList的简单介绍JDK中这样定义ArrayList:List接口的大小可变数据的实现。

2017-06-01 22:18:30 140

原创 对JAVA RMI的认识

RMI的定义RPC (Remote Procedure Call):远程方法调用,用于一个进程调用另一个进程中的过程,从而提供了过程的分布能力。RMI(Remote Method Invocation):远程方法调用,即在RPC的基础上有向前迈进了一步,提供分布式对象间的通讯。允许运行在一个java 虚拟机的对象调用运行在另一个java虚拟机上对象的方法。这两个虚拟机可以是运行在相

2017-06-01 22:18:00 137

转载 剑指offer 1

1 class Solution { 2 public: 3 bool Find(int target, vectorint> > array) { 4 int s1 = array.size(), s2 = array[0].size(); 5 int i = s1 - 1, j = 0; 6 while (i >= 0 && j

2017-06-01 22:15:59 131

原创 c++ 设计模式4 (Strategy)

3.2 Strategy (策略模式)动机:在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂,而且有时候支持不使用或不常使用的算法也是一个性能负担。如何在运行时根据需要透明地改变对象的算法?将算法和对象本身解耦,从而避免上述问题? 代码示例:如果使用第一种方法,需要更改枚举类型和if else语

2017-06-01 22:14:20 133

原创 c++ 设计模式5 (Observer / Event 观察者模式)

3.3 观察者模式 (Observer)/发布-订阅模式动机:在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都能得到通知。如果这样的依赖关系过于紧密,将使得软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。 

2017-06-01 22:13:51 161

原创 c++ 设计模式6 (Decorator 装饰模式)

4. “单一职责”类模式在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。典型模式代表: Decorator,Bridge 4.1 Decorator 装饰模式 代码示例:不同的流操作(文件流,网络流,内存流)及其扩展功能(加密,缓冲)等的实现实现代码1

2017-06-01 22:13:12 134

原创 c++ 设计模式7 (Bridge 桥模式)

4.2 Bridge 桥模式动机: 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个变化的维度。 代码示例:实现一个Messager,含有基本功能PlaySound,Connect等,并有PC、Mobile不同的平台实现 和 精简、完美等不同业务功能的版本实现方法1:Bridge1.cpp类的个数:1 + n + m

2017-06-01 22:12:46 161

原创 c++ 设计模式8 (Factory Method 工厂方法)

5. “对象创建”类模式通过“对象创建”类模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。5.1 工厂方法动机:在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”

2017-06-01 22:12:15 159

原创 c++ 设计模式9 (Abstract Factory 抽象工厂模式)

5.2 抽象工厂模式动机:在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 代码示例:实现利用数据库的业务逻辑,支持多数据库(Sql,Oracle等),有连接、命令、读取等功能。其中命令,连接功能之间有相互联系。方法一(使用工厂方法):每个功能类有一个创建的工厂,如IDBCon

2017-06-01 22:11:43 117

原创 C++类设计1(Class without pointer members)

class complex{ public: complex (double r = 0, double i = 0):re(r), im(i){} //inline complex& operator += {const complex&}; double real() const{return re;} //inl

2017-06-01 22:11:06 222

原创 C++类设计2(Class with pointer members)

二 Class with pointer members(Class String)1. 测试代码(使用效果)int main(){ String s1(), String s2("hello"); //构造函数 String s3(s1); //拷贝构造 cout << s3 << endl;

2017-06-01 22:10:41 196

原创 C++对象内存模型1(堆栈模型)

对象内存模型一. 栈(Stack) VS. 堆(heap)栈 由系统自动管理,以执行函数为单位空间大小编译时确定(参数+局部变量)函数执行时,系统自动分配一个stack函数执行结束时,系统立即自动回收stack堆 在c++中由程序员手动控制手动分配new和malloc手动释放delete和free具有全局性,总体无大小限制容易造成内存泄露1. Myc

2017-06-01 22:10:01 195

原创 算法总结—链表

链表题目对算法的要求度不高,但实际写的过程中需要注意语言细节,考虑精细度的地方很多。1.链表结构与基本操作1.1 添加节点一般情况:cur ->next = prev ->next;prev ->next = cur;表头插入:cur ->next = head;head = cur; 1.2删除节点一般情况:(已

2017-06-01 22:09:31 132

原创 算法总结

一 基础知识1.均为线性表,可以由数组或链表实现 栈:先进后出,操作均在栈顶进行队列:先进先出,队尾进,队首出 2.  STL stack & queuestack 常见操作:s.push(x):入栈 (void类型)s.pop(): 出栈 (void类型,只删除,不返回元素)s.top(): 返回栈顶元素s.

2017-06-01 22:08:57 285

原创 C++面向对象设计

一. 组合(复合),继承,委托1.composition(组合)has-a1.1 组合举例:(Adapter 设计模式)关系:利用deque功能实现所有queue功能template class T>class queue{protected: deque c; //deque 是两端可进出,queue是末端进,前端出 public

2017-06-01 22:08:22 174

原创 c++ 构造函数,拷贝构造函数,析构函数与赋值操作符

题目:为下面的Rectangle类实现构造函数,拷贝构造函数,赋值操作符,析构函数。class Shape{     int no;};class Point{     int x;     int y;};class Rectangle: public Shape{     int width

2017-06-01 22:07:32 263

空空如也

空空如也

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

TA关注的人

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