Pistachio's Blog

Later equals never.

组合模式

模式简介 组合模式适用于树形结构的模型,表示部分与整体的层次关系,例如文件夹中有文件夹或文件;大学中有不同学院,学院中有不同专业……,故属于结构型模式。 该模式创建对象组的树形结构,将对象组合成树状结构,以表示部分与整体的层次。 组合模式能让客户以一致的方式处理个别对象和组合对象。 原理结构图 1)Component:(部件)这是在组合对象中声明的接口或者抽象类,实现所有类中共有的接口的默......

【结构型】适配器模式

一、定义将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的类能够一起工作。 二、结构 Adapter->Adaptee是组合的关系(is a) 三、例子1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950// ......

排序算法

一、冒泡排序(稳定 O(N)~ O(N^2^))基本思想:两两数字比较,比较在每一趟遍历中,看当前数字会不会比下一个大,如果比下一个大则交换。每一趟交换中能找到最大的数,放在末尾。 最好情况:顺序 只需遍历一遍 T = O(N) 最坏情况:逆序 全部都得排序 T = O(N^2^) 如数组:5,3,7,10,6,18,4 123456789101112131415161......

约瑟夫环问题

LeetCode 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 1234567int lastRemaining(int n, int m) { int ans = 0; for(int i = 2; i <= n; i++){ ans = (......

【创建型】原型模式

一、定义使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。(比较少见,但要知道其使用技巧) 二、结构 与工厂模式的相同&区别 和工厂模式一样,都是用于解决对象创建的问题, 但如果对象创建比较复杂,需要考虑状态变化,则使用原型模式。否则用工厂 深克隆实现深克隆有两种方式 1.种是采用序列化的方式实现2.采用依次克隆各个可变的引用类型域 覆盖Object中的clo......

PHP面向对象

构造方法只要类被实例化之后,构造方法会被执行,就是在对象执行方法之前。 构造方法必须为public,否则无法被实例化 12345678910111213<?phpclass Number{ public function __construct(){ echo "1输出"; echo "2输出"; ......

单调栈

单调栈简介单调栈分为单调递增栈和单调递减栈,顾名思义就是栈内元素大小保持递增或递减。 操作规则(以单调递增栈为例)如果新进来的元素比栈顶元素大,则进栈 如果新进的元素比栈顶元素小,就把栈内元素出栈,直到找到第一个比新进元素要小的元素为止。 代码模板123456789int MonotoneStack(vector<int>& height){ stack&......

动态规划

动态规划用于解决重叠子问题(overlap sub-problem),已经计算过的不再重复计算,而是从内存中重新调出来使用。 LeetCode 按摩师(同打家劫舍系列) 给定预约时长,找到最优的预约集合(时长最长),且不能接收相邻的预约 输入: [2,1,4,5,3,1,1,3]输出: 12解释: 选择 1 号预约、 3 号预约、 5 号预约和 8 号预约,总时长 = 2 + 4......

Prime

一、试除法求素数(通常会超时) 1234567891011121314151617bool isPrime(int n){ for(int i = 2; i <= sqrt(n); i++){ if(n%i==0) return false; } return true; ......

幂集

幂集,也是原集合的所有子集 位运算求幂集 1234567891011121314vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>>ans; for(int i = 0; i < (1<<......