景铭的博客

The LORD is my shepherd; I shall not want.

Leetcode按题目类型总结(一)

数组和字符串

所有代码详见:https://github.com/jingminglake/Leetcode 总体思路 数组的题目第一反应是暴力求解,把所有解空间找到,并进行遍历,之后再考虑优化,例如使用动态规划优化,双指针或者hash来做。 最重要的还是要找到特点:例如字符串问题,是否是固定字母开头。 字符串省空间技巧:还是用原来字符串,但是使用新的下标,表示修改后的index。 subse...

设计模式概要

设计模式简单理解小结

0. 面向对象的目标 可扩展性 容易添加新的功能。 灵活性 代码修改平稳的发生,修改一个方法不会影响另一个方法。 可替换性 可插入性,将一个同样接口的类加入进来,不影响原来代码。 高内聚、低耦合 模块内部之间关系紧密,也就是不可分割;低耦合指模块间关系弱。 1. 设计模式分类: 创建型模式 解决对象创建问题。创建型模式包括:工厂(简...

UML类图关系理解

简单理解小结

UML的类之间有几种关系:泛化Generalization(继承Extend、实现Implementation)、依赖Dependence、关联(聚合Aggregation、组合Composition)。 首先,这几种关系并不是独立的、非此即彼的关系。 他们之间相互关系如下:依赖是最基本的关系,主要体现类之间存在调用的情况;关联关系必然是依赖关系,关联关系主要体现类与类之间的千丝万缕的依...

算法与数据结构总结

分治法

一、分治法时间复杂度计算 T(n)= aT(n/b)+ f(n) 展成树:则第二层的结点有a个,每个结点为f(n/b),所以整个第二层的和为a*f(n/b)。 这时三种情况: (1)a*f(n/b)和 f(n)是相等的,例如a=2,b=2,f(n)=n。那么说明每一层开销都是f(n)。而总共有logn层,所以T(n)=O(f(n)*logn)。 (2)a*f(n/b)比 f(n)小,例如a=...