俊介三

一天更新一点,一天积累一点

导航

2013年3月23日

摘要: 单例模式,确保一个类只有一个实例,并且提供一个全局访问点。这算是设计模式中最最最简单的一个。就是说,我想创建一个类,这个类只允许一个实例,就能用这个模式。什么场景下我只要并且只能有一个实例呢?如数据库连接、如打印机连接等。。class Singleton{ //volatile强制每次都跟原来的成员变量进行比较,防止在线程中出错。 private volatile static Singleton uniqueInstance; //私有构造方法 private Singleton(){} //公共静态方法,使得通过类名就能调用它 p... 阅读全文

posted @ 2013-03-23 14:45 俊介三在前进 阅读(103) 评论(0) 推荐(0)

摘要: 装饰者模式:当需要给对象添点数据,加点小功能时,这个模式最合适了。这两个例子最典型:有一杯咖啡,可以给它加奶、加糖、加巧克力、加泡沫,有的消费者要加奶加糖的;有的要加巧克力加盐的;总之就是不同的小需求的对象的构建Java IO 是典型的装饰者模式。InputSteam in = new LineNumberInputStream(new BuffredInputStream(new FileInputSteam); 把各种小需求加进这个输入流中。缺点是:类太多了!!没有个类图,直接看它API烦得要死~类图如下:贴一个装饰者模式的例子:public class DecoratorPattern 阅读全文

posted @ 2013-03-23 10:35 俊介三在前进 阅读(123) 评论(0) 推荐(0)

2013年3月22日

摘要: 观察者模式是一个常用模式:有一个主题(subject),有很多观察者(observers)注册了此主题。那么此主题一旦发布新的数据,这些注册了此主题的观察者就能够察觉这些数据的更新,根据这些更新的数据进行各自的处理。就像订报纸一样。报社(subject)一旦发布新的报纸,他就主动把这些新的报纸发送给订户们(observers)。而不是订户是不是去报社看看有新报纸没~下面看看这个类图:这是一个天气预报的类图,气象站(WeatherData)一旦发布新的天气数据,它的订户们(各种形式的公告板,如StatisticDisplay,ForecastDisplay等)就能收到最新的天气数据,进行更新(P 阅读全文

posted @ 2013-03-22 12:29 俊介三在前进 阅读(174) 评论(0) 推荐(0)

2013年3月21日

摘要: 刚刚参加了腾讯2013马拉松,第二题(a^b)%c越界还是超时吧~桑不起。最后做了3/5~~第三题见提交的和过的都好少,直接无视。现在总结总结第二题快速幂的知识吧,当时不知道。。题目:求(m^n)%k 其中m,n的上限都是10^9,而c的值为10^9+7解答://整数的快速幂 m^n % k 的快速幂: __int64 quickpow(__int64 m , __int64 n , __int64 k){ __int64 ans = 1; while(n){ if(n&1)//如果n是奇数 ans = (ans *... 阅读全文

posted @ 2013-03-21 23:04 俊介三在前进 阅读(103) 评论(0) 推荐(0)

2013年3月18日

摘要: 先贴一个策略模式的示例类图:策略模式这样定义:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用使用算法的客户。上面类图的意思就是鸭子有飞的行为和叫的行为。但不同鸭子有不同的飞和叫的行为。因此把飞和叫的行为(算法)独立出来。各个具体的鸭子分别使用各自需要的行为。我认为策略模式的核心就是:把会变化的、可扩展的独立出来。面向接口来编程。高层(即抽象)的只调用高层接口、类等。具体的类再通过抽象的方法进行调用。利用这个例子再通俗地讲一次吧:我有一只抽象的鸭子,它有很多具体的实现类,如橡皮鸭子、红头鸭子等。这些鸭子在非常抽象的层面上都有共同的行为,如怎么飞和怎么叫。那么,现 阅读全文

posted @ 2013-03-18 19:59 俊介三在前进 阅读(110) 评论(0) 推荐(0)

2013年3月11日

摘要: 实现这个函数pow(double x, int n)http://discuss.leetcode.com/questions/228/powx-n有几点要注意:1.n是整数,可以是正、负和02.x可以为03.使用divide and conquer.是的,一次for循环从0到|n|会超时,把它分成两半,时间复杂度立即减半代码入下:double pow(double x, int n) { // A trick to avoid -INT_MIN underflow if (n < 0) return 1.0 / pow(x, -(n+1)) / x; if (n == 0)... 阅读全文

posted @ 2013-03-11 20:41 俊介三在前进 阅读(166) 评论(0) 推荐(0)

摘要: Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.http://discuss.leetcode.com/questio 阅读全文

posted @ 2013-03-11 20:06 俊介三在前进 阅读(144) 评论(0) 推荐(0)

摘要: You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8http://discuss.leet 阅读全文

posted @ 2013-03-11 13:09 俊介三在前进 阅读(163) 评论(0) 推荐(0)

2013年3月10日

摘要: 问题:给一个排好序的数组arr[9]={1,3,5,7,19,23,22,33,100};再给某个数k,看它是否在此数组中,如果在,返回它的index,否则返回-1。使用遍历一遍查找的方法,最坏的时间复杂度是O(n).(假如第一个就找到了,时间复杂度是O(1),但这没有意义。一般情况,很可能找不到而变成就坏的情况。所以计算最坏时间复杂度非常有现实意义。)当然,这题使用二分查找,时间复杂度为O(logn)代码如下:View Code #include <stdio.h>int binarySearch(int* arr, int start, int end, int n){ int 阅读全文

posted @ 2013-03-10 22:42 俊介三在前进 阅读(126) 评论(0) 推荐(0)

2013年3月9日

摘要: Square Coinshttp://acm.hdu.edu.cn/showproblem.php?pid=1398使用面值为1,2^2,3^2,4^2,...,17^2的硬币若干个,能有多少个组合方式组合成给定的数目N思路:母函数(generation function)的应用,构造(1+x+x^2+x^3...)(1+x^2+x^4+x^6+...)...(1+x^17+x^34+...)得到x^N的系数即为所求解。View Code #include <stdio.h>int result[305];int temp[305];int main(){ int i,j,k,n; 阅读全文

posted @ 2013-03-09 13:20 俊介三在前进 阅读(87) 评论(0) 推荐(0)