摘要: Description:Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in whi... 阅读全文
posted @ 2015-06-19 11:57 Pickle 阅读(178) 评论(0) 推荐(0) 编辑
摘要: Description:Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.push(x) -- Push element x onto stack.pop(... 阅读全文
posted @ 2015-06-19 00:04 Pickle 阅读(203) 评论(0) 推荐(0) 编辑
摘要: Description:The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221, ...1 is read off as "one 1" or 11. 1... 阅读全文
posted @ 2015-06-18 19:38 Pickle 阅读(178) 评论(0) 推荐(0) 编辑
摘要: Description:Invert a binary tree. 4 / \ 2 7/ \ / \1 3 6 9to 4 / \ 7 2 / \ / \9 6 3 1递归invert就好了。/** * Definition for a binary tree ... 阅读全文
posted @ 2015-06-16 23:58 Pickle 阅读(209) 评论(0) 推荐(0) 编辑
摘要: Description: Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i... 阅读全文
posted @ 2015-06-16 23:37 Pickle 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 桥接模式核心:处理多层继承结构,处理多维度变化的场景。将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。 桥接模式特点: 桥接模式可以取代多层继承的方案。多层继承违背了单一职责原则。复用性较差。类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。 桥... 阅读全文
posted @ 2015-06-04 23:21 Pickle 阅读(892) 评论(0) 推荐(0) 编辑
摘要: 责任链模式:将能够处理同一类请求的对象连成一条链所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求, 如果能则处理,如果不能则传递给链上的下一个对象。优点:将请求者和发送者解耦简化对象的处理过程可以通过改变链中的成员或成员的顺序来动态的新增或则删除责任。缺点:不能保证请求一定会执行,可能... 阅读全文
posted @ 2015-06-04 00:27 Pickle 阅读(2885) 评论(0) 推荐(0) 编辑
摘要: 代理模式:核心作用:通过代理控制对对象的访问,可以详细访问某个对象的方法,在调用这个方法前置处理,调用这个方法后做后置处理。 抽象角色:定义角色代理和真实角色的公共对外方法。 真实角色:实现抽象角色,定义真实角色所需要的实现的业务逻辑,供代理角色调用。 关注真正的业务逻辑!代理角色:实现抽象角色,是... 阅读全文
posted @ 2015-06-03 23:08 Pickle 阅读(948) 评论(0) 推荐(0) 编辑
摘要: 享元模式: 场景:内存属于稀缺资源,如果有很多个完全相同或相似的对象,我们可以通过享元模式来节省内存。 核心:享元模式以共享的方式高效地支持大量细粒度对象的重用。 享元对象能做到共享的关键字是区分了内部状态和外部状态。 内部状态:可以共享,不会随着环境变化而改变。 外部状态:不可以共享,会随着... 阅读全文
posted @ 2015-06-03 17:57 Pickle 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 中介者模式:如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量的多对多关系,将导致关系及其复杂,这些对象称为“同事对象”, 我们可以引入一个中介者对象使各个同时对象只跟中介者对象打交道。将复杂的网络结构化解为如下的星形结构。使用中介者模式来 集中相关对象之间复杂的沟通和控制方式。优点: 通... 阅读全文
posted @ 2015-06-02 15:57 Pickle 阅读(819) 评论(1) 推荐(0) 编辑
摘要: //求一个整数的二进制串中1的个数public int hammingWeight(int n) { String b_str = Integer.toBinaryString(n); int b_count = 0; for(int i=0; i<b_str.length(... 阅读全文
posted @ 2015-06-01 23:54 Pickle 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 状态模式:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。 结构:Context环境类:环境类中维护一个State对象,它定义了当前的状态 。 State:状态接口 ConcreteState: 具体的状态类,封装了每一个具体类的对应行为。 应用场景: 线程对象各个状态的切换 店房间... 阅读全文
posted @ 2015-06-01 17:23 Pickle 阅读(1491) 评论(0) 推荐(0) 编辑
摘要: 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 简单的说,外观模式就是把复杂的系统的具体操作封装起来,只暴露一个简单的接口,做和众多子系统之间松耦合。 提到一个设计原则:最少知识原则,只和你的密友谈话。(HeadFirst中的描述)具体的说就... 阅读全文
posted @ 2015-05-30 21:42 Pickle 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,让我们能游走与聚合内的每一个元素,而又不暴露其内部的表示。 把游走的任务放在迭代器上,而不是聚合上这样简化了聚合的接口和实现,也让责任各得其所 提供一种可以遍历聚合对象的方式,又称为:游标cursor模式 聚合对象:存储数据 迭代器:遍历数... 阅读全文
posted @ 2015-05-30 21:13 Pickle 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原... 阅读全文
posted @ 2015-05-30 17:29 Pickle 阅读(1035) 评论(0) 推荐(0) 编辑
摘要: 当创建给定的实例的过程很昂贵或非常复杂的时候,就使用原型模式来拷贝,这种方式在创建对象要耗费很多资源的时候效率提升显著。 实现深度克隆有两种方法,一种是实现Cloneable接口,重写clone()方法。另一种是通过序列化反序列化来获取对象的拷贝。 看一个介绍:http://blog.csdn.n... 阅读全文
posted @ 2015-05-30 17:09 Pickle 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 模板方法模式:模板方法模式是编程中经常用到的模式,它定义了一个操 作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在 不改变一个算法结构的前提下重新定义该算法的某些特定的步骤。 核心:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不 能确定。因此采用工厂方法模式将这个节点... 阅读全文
posted @ 2015-05-30 16:53 Pickle 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 命令模式:将一个请求封装为一个对象,从而使我们可以用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作模式,事务模式。例如数据库的底层架构实现就是一种命令模式。 一个具体的命令来实现命令接口,并且通过Reciever的action()实现execute()方... 阅读全文
posted @ 2015-05-30 16:45 Pickle 阅读(1348) 评论(0) 推荐(0) 编辑
摘要: 判断产品版本号的大小。public class Solution { public int compareVersion(String version1, String version2) { String[] v1 = version1.split("\\."); ... 阅读全文
posted @ 2015-05-24 19:14 Pickle 阅读(163) 评论(0) 推荐(0) 编辑
摘要: HeadFirst中的定义:适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 适配器模式将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能在一起 工作的类可以在一起工作。 目标接口(Target):客户所期待的接口。目标可以... 阅读全文
posted @ 2015-05-22 16:11 Pickle 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 从右向左旋转数组,一共k次。k可以是任意数字。public class Solution { public void rotate(int[] nums, int k) { if(k == 0 || nums.length==0 || nums.length==1) ret... 阅读全文
posted @ 2015-05-21 23:43 Pickle 阅读(165) 评论(0) 推荐(0) 编辑
摘要: HeadFirst中并没有把建造者模式(生成器模式)当做常用的设计模式来讲解,只是在附录中一带而过。 建造者模式的本质: 分离了对象组件的单独构造(由Builder来负责)和装配(由Director)来负责。从而可以构建出复杂的对象。这个模式适用于:某个对象的构建 过程复杂的情况先使用。由于实现了... 阅读全文
posted @ 2015-05-21 22:23 Pickle 阅读(518) 评论(0) 推荐(1) 编辑
摘要: 题意很好理解,判断两个字符串的结构是否相同。测试数据里有?{}【】等符号啊,果断扩大到300.public class Solution { public static boolean isIsomorphic(String s, String t) { if(isIsomorphicOn... 阅读全文
posted @ 2015-05-21 15:24 Pickle 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 工厂模式用来实例化对象并且实现实现与调用分离,用工厂模式来替代new。 来看看这位老兄总结的吧,不想废话了。http://www.cnblogs.com/poissonnotes/archive/2010/12/01/1893871.html 工厂模式有三种: 1. 简单工厂模式 2. 工厂方法模... 阅读全文
posted @ 2015-05-20 23:58 Pickle 阅读(494) 评论(0) 推荐(0) 编辑
摘要: 反转链表,用了一个比较笨的方法。public class Solution { public ListNode reverseList(ListNode head) { if(head == null || head.next == null) retur... 阅读全文
posted @ 2015-05-20 23:28 Pickle 阅读(189) 评论(0) 推荐(0) 编辑