Algorithm
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
int size = 0;
public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> list = new ArrayList();
if (root ==null) return list;
Queue<Node> queue = new LinkedList<Node>();
List<Integer> arr = null;
queue.offer(root);
size = 1;
while (queue.size()!=0){
arr = new ArrayList();
list.add(this.helper(arr , queue)) ;
}
return list;
}
public List<Integer> helper (List<Integer> arr ,Queue<Node> queue){
int tempsize = 0;
for (int i = 0; i < size; i++) {
Node node = queue.poll();
arr.add(node.val);
List<Node> nodes = node.children;
if (nodes !=null ){
for (int j = 0; j < nodes.size(); j++) {
queue.offer(nodes.get(j));
tempsize++;
}
}
}
size = tempsize;
return arr;
}
}
Review
Data Structures & Algorithms - Overview
数据结构是一种系统的方式来组织数据,以便有效地使用它。以下术语是数据结构的基础术语。
- 接口 - 每个数据结构都有一个接口。接口表示数据结构支持的一组操作。接口只提供支持的操作列表、它们可以接受的参数类型和这些操作的返回类型。
- 实现 - 实现提供数据结构的内部表示。实现还提供了在数据结构的操作中使用的算法的定义。
数据结构的特征
- 正确性 - 数据结构的实现应该正确地实现它的接口。
- 时间复杂度 - 数据结构的运行时间或操作的执行时间必须尽可能小。
- 空间复杂度 - 数据结构操作使用的内存应该尽可能少。
执行时间情况
在一种相对的方式中,有三种情况通常用来比较各种数据结构的执行时间。
- 最坏情况 - 在这种情况下,特定的数据结构操作可能会花费最大的时间。如果一个操作的最坏情况时间是ƒ(n),那么这个操作不会超过ƒ(n)时间,ƒ(n)代表n的函数。
- 平均情况 - 这是描述数据结构操作的平均执行时间的场景。如果在一个执行操作花费的时间是ƒ(n),那m个操作花费的时间为mƒ(n)。
- 最好情况 - 这是描述数据结构的操作的最小可能执行时间的场景。如果在一个执行操作花费的时间是ƒ(n), then the actual operation may take time as the random number which would be maximum as ƒ(n).
Basic Terminology
- Data - 数据是一个值或一组值
- Data Item − Data item refers to single unit of values.
- Group Items − 多个Data item被分到多个item中,这个item叫做Group Items.
- Elementary Items − 多个Data item不能被分开,这个item叫做基础 Items。
- Attribute and Entity − 实体包含属性,这些属性可以被赋值。
- Entity Set − 具有相似属性的实体形成一个实体集。
- Field − 字段是表示实体属性的单个基本信息单元。
- Record − Record是给定实体的字段值的集合。
- File − 文件是给定实体集中实体的记录集合。
Tips
累积图(cumulative flow diagram),简写CFD
什么是CFD?用它能带来什么好处?用它需要提前做些什么?
查阅相关资料后,按自己的理解整理如下:
CFD适应于流水线式的“项目”管理,随着时间的推进展示各阶段任务的完成积累情况。
-
一图观全局进展情况,如:一个项目会分解多个阶段(需求、设计、开发、测试、部署、上线)和多岗位共同协作(需求、前端开发、后端开发、测试),通过CFD全局了解各阶段的进度和各阶段之间的关系。
示意图:
在项目上如果要使用累积图我认为关键在于任务的定义,让每项任务在每个阶段能识别并且流传。
Share
优秀是一种习惯,Excellence is a habit。很多人以为这段话是亚里士多德说的,其实并不是。这句话的出处是威尔·杜兰特的著作《哲学的故事》( The Story of Philosophy)。
习惯有两个方向,优秀是一种习惯,平庸也是一种习惯。而且习惯不等同于重复,习惯是具有马太效应的。
优秀习惯,习惯优秀!当一个人养成足够的优秀习惯后,他就会变得习惯优秀了,注意,不需借助任何外力,是习惯性的优秀下去。而且,今天的优秀习惯,会造就明天更优秀的自己,习惯优秀,是变得越来越优秀。同样,平庸的人,也不会原地踏步,而是变得越来越平庸。
优秀和平庸,你会选择哪个?一个上进的人自然会选择前者,将优秀变为一种习惯。