BFS代码模版
def BFS(graph, start, end):
queue = []
queue.append([start])
visited.add(start)
while queue:
node = queue.pop()
visited.add(node)
process(node)
nodes = generate_related_nodes(node)
queue.push(nodes)
BFS代码模版
def BFS(graph, start, end):
queue = []
queue.append([start])
visited.add(start)
while queue:
node = queue.pop()
visited.add(node)
process(node)
nodes = generate_related_nodes(node)
queue.push(nodes)
示例代码
python
class TreeNode:
def init(self, val):
self.val = val;
self.left, self.right = None, None
C++
Struct TreeNode {
int val;
TreeNode * left;
TreeNode * right;
TreeNode(int x) : val(x),left(NULL),right(NULL) {}
}
Java
public class TreeNode {
public int val;
public TreeNode left, right;
public TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}
二叉树dsf 示例代码
def dsf(node):
if node in visited:
# already visited
return
visited.add(node)
# process current node
# ... # logic here
dfs(node.left)
dfs(node.right)
多叉树dsf 示例代码
visited = set()
def dfs(node, visited):
# terminator
if node in visited:
# already visited
return
visited.add(node);
# process current node here
# 遍历所有子节点
for next_node in node.children:
if not next_node in visited:
dfs(next_node, visited)
DFS非递归写法
def DFS(self, tree):
if tree.root is None:
return []
visited, stack = [], [tree.root]
while stack:
node = stack.pop()
visited.add(node)
process(node)
nodes = generate_related_nodes(node)
stack.push(nodes)
# other processing work
1 | # python 递归模版 |
// Java递归模版
public class recursionTemplate {
public void recur(int level, int param) {
// terminator
if (level > MAX_LEVEL) {
// process result
return;
}
// process current logic
process(level, param);
// drill down
recur(level: level + 1, newParam);
// restore current status
}
}
def divede_conquer(problem, param1, param2, …):
# recursion terminator
if problem is None:
print_result
return
# prepare data
data = prepare_data(problem)
subproblems = split_problem(problem, data)
# conquer subproblems
subresult1 = self.divede_conquer(subproblems[0], p1, ...)
subresult2 = self.divede_conquer(subproblems[1], p1, ...)
subresult3 = self.divede_conquer(subproblems[2], p1, ...)
...
# process and generate the final result
result = process_result(subresult1, subresult2, subresult3, ...)
第一部分 思维方式与原则
第一章 由内而外的造就自己
付诸行动
Q1:你是否曾做出推测时发现自己的判断过于匆忙?请对这种经历加以描述。
在青岛的时候,没有很好地去体谅对方,对你一会不热情,你就以为人家不爱你,冲动地做出了一些傻事,
Q2:你当时做出的推测是什么?
因为是最后一晚在一起,为什么要抗拒我,这样的观点是错误的,两个人在一起可以做很多其他的有意义的事情
Q3:想一下你做过的其他推测。本周你将对其中某一项采取什么行动?
(一)检验你的思维方式
你曾经到过其他国家,或本国的其他地区吗?你觉得哪些事情是陌生的奇怪的?
最近的一次是青岛,当地人
人们的行为是否如你预期?你对他们的行为有何看法?
回想你的旅游经历,你认为当地人对你的看法如何?你是否认为他们对你的看法与你对他们的看法可能很类似?
如果你有机会在旅途中认识当地人,你对他们的看法或推测会有什么改变?
(二)转换你的思维方式
回想一下通往你的工作场所或你家的不同路径。是否有些路径比其他的更复杂?是否有时其中一条比其他的更方便?为什么方便,为什么不方便
你是否发现过一条你以前不知道的新路径?走不同的路径的新鲜感如何?
现在想一下你与他人打交道的方式。与他们打交道是否有好几种方式?你有可能尝试哪些新的方式?
(三)影响你生活的五个原则
请列出影响你的日常生活的五个原则。它们以怎样的方式影响你?它们是以积极还是消极的方式影响你的生活?
1.
2.
3.
4.
5.
第二章 七个行动概论
付诸行动
第二部分 个人领域的成功:从依赖到独立
第三章 习惯一: 积极主动——个人愿景的原则
付诸行动
第四章 习惯二: 以始为终——自我领导的原则
付诸行动
第五章 习惯三: 要事第一——自我管理的原则
付诸行动
第三部分 公众领域的成功:从独立到互赖
第六章 人际关系的本质
付诸行动
第七章 习惯四:双赢思维——人际领导的原则
付诸行动
第八章 习惯五:知彼解己——移情沟通的原则
付诸行动
第九章 习惯六:统合综效——创造性合作的原则
付诸行动
第四部分 自我提升和完善
第十章 习惯七:不断更新——平衡点自我提升法则
付诸行动
第十一章 再论由内而外造就自己
付诸行动
Java Dvelopment Kit (JDK)
1. Java Runtime Enviroment (JRE)
Includes the code behind all the variable types and built-in functions (ex. the println() function)
包含所有变量类型和Java内置函数涉及的代码 比如println()函数
which allows Java code to run on any platform!
It also includes a Java Virtual Machine (JVM).
Runtime Enviroment 还含有一个Java虚拟机 该虚拟机可以从网上下载 可允许Java代码在任何计算机上运行 无论是Windows、Mac还是其它操作系统都可
很多电脑本身就装有Runtime Enviroment 因为计算机需要这个工具来运行网页里的Java应用程序
但是要开发我们自己的程序和Java应用,我们需要第二个工具 也就是Java编译器
2. a Java compiler (javac)
A compiler is a special type of program that translates programing language code into code that a computer can excute
Program code --in--> Compiler ---out--> Translated code
Java Code -> Compiler(javac) -> Bytecode -> Java Virtual Machine -> Machine Code
在编辑器中编写Java代码
subl HelloWorld.java
// 保存文件时 文件名应与类名相同
public class HelloWorld {
// class 在Java中是用来存放函数和代码并关联程序的
public static void main(String[] args) {
System.out.println(“Hello world!”);
}
}
在terminal中运行Java代码的流程
1. javac 代码文件名.java
对代码进行编译 生成class文件
2. java 文件名
执行java程序
在编辑器修改代码后 需要重新编译
Java集成开发环境 Intellij
Debug
断点
step over
resume
step into
step out
自动生成注释
/ + a + tab
https://blog.csdn.net/qq_34581118/article/details/78409782
ctrl + j 查看方法文档
static 表示它不需要对象就能运行,因此计算机在创建任何对象之前,会从该方法开始
构造方法:是特殊的方法,负责为该类创建和初始化对象
1. 构造方法没有任何返回类型
2. 构造方法的名称和类本身的名称一样
默认构造函数
参数化构造函数
class Game{
int score;
// Default constructor
Game() {
score = 0;
}
// Constructor by starting score value
Game(int startingScore) {
score = startingScore;
}
}
// 访问构造方法
new关键字 要创建特定类的对象,你需要使用 new 关键字,后面是要使用的构造方法
Game tetris = new Game(); // 调用默认构造函数
Game darts = new Game(100); // 调用带参构造函数
始终尝试将所有字段声明为 private
创建一个将这些 private 字段当做输入的构造函数
创建一个设置每个 private 字段的 public 方法,这样你就知道何时更改了字段。这些方法叫做 setter
创建一个返回每个 private 字段的 public 方法,这样你就能够读取该字段,而不会不小心更改了它。这些方法叫做 getter
将所有类设为 public
将所有字段设为 private
将所有当做操作的方法设为 public
将所有当做辅助方法的方法设为 private
System.out.println(“Enter your address: “);
// 创建scanner对象 Scanner 允许程序读取来自特定输入的任何数据类型
// 你可以使用它来读取 String、整数或整个行。
Scanner scanner = new Scanner(System.in);
// 在该 scanner 对象中调用方法 nextLine() 将返回一个 String,其中包含用户在按下”enter”前输入的所有内容。
String address = scanner.nextLine();
System.out.println(“You live in “ + address);
简而言之,在大多数情况下,你会希望变量和方法属于某个对象,而不是整个类,因此在大多数情况下,你不需要声明为 Static。但是,如果你要创建一个提供某种功能的类,而不是拥有自己的状态,那么就非常适合将其大部分方法和字段声明为 Static。
例如,还记得我们用来生成随机数字的 Math 类吗?该 Math 类是具有 random() 等大量 static 方法的类。因为没必要创建一个对象,叫做 math1,再创建一个对象,叫做 math2,所有 Math 都一样,因此我们可以直接使用该类本身来调用其方法,因此这时候就适合使用 static。
Static 属于类
1 | git commit -m "week0X assignment" |
将对应的链接复制到原始仓库的issue
#学号:G20200343090088
#姓名:张文胜
#班级:12期2班
#语言:java
#作业&总结链接: https://github.com/VincentCheungKokomo/algorithm012/tree/master/Week_02
刻意练习
——从新手到大师
我们认为杰出的人都是因为天赋,而那些“天才”其实是来自正确的刻意训练
天才的真相
a. 莫扎特:音乐家父亲的刻意练习
b. 帕格尼尼: 断弦演奏来自事前的练习和策划
c. 训练比智商更重要
有目的的练习
a. 定义明确的具体的目标
b. 专注、反馈、走出舒适区
c. 遇到瓶颈:做不同的事;强化动机
大脑的适应能力
a. 通过适应性训练打造你的“最强大脑”
b. 让大脑步出舒适区: 合理挑战
c. 练习改变大脑结构
心理表征
a. 心理表征: 思考的心理结构或是下意识
b. 刻意练习能够创建心理表征
黄金标准
a. 最杰出的人,训练时间最长
b. 运用刻意练习的原则
* 尽可能地运用刻意练习提升技能
* 确定行业的标杆人物及与他人的差别
* 找到优秀导师
c. 1万小时法则:刻板,混淆概念
在工作中运用刻意练习
a. 拒绝错误思想:我做不到;熟能生巧; 刻苦就够
b. 干中学,传授技能而非知识
在生活中运用刻意练习原则
a. 找到好导师
b. 投入、专注
c. 3F方法:Focus; Feedback; Fix it
成为杰出人物的四个阶段
1.产生兴趣
2.变得认真
3.全力投入
4.开拓创新
《我为何而生》
罗素
有三种情感,单纯而强烈,支配着我的一生:对爱情的渴望,对知识的追求,以及对人类苦难不可遏制的同情。这些感情如阵阵巨风,挟卷着我在漂泊不定的路途中东飘西荡,飞越苦闷的汪洋大海,直抵绝望的边缘。
我之所以追寻爱情,首先,爱情使人心醉神迷,如此美妙的感觉,以致使我时常为了体验几小时爱的喜悦,而宁愿献出生命中其它一切;其次,爱情可以解除孤独,身历那种可怕孤寂的人的战栗意识,会穿过世界的边缘,直望入冰冷死寂的无底深渊;最后,置身于爱的结合,我在一个神秘缩影中看到了圣贤与诗人们所预想的天堂。这正是我所追寻的,尽管它对于人类的生活或许太过美好,却是我的最终发现。
我也以同样的热情追求知识。我渴望理解人类的心灵,渴望知道星辰为何闪耀,我还试图领略毕达哥拉斯关于哪些数字在变迁之上保持着永恒的智慧。在这一方面,我取得了一点成果,但并不算多。
爱情与知识,尽其可能,引领着我通往天堂;然而怜悯总是把我带回现实。那些痛苦的呼唤在我内心深处回响。饥饿中的孩子,被压迫和折磨的人们,给子女造成重担的无助老人,以及孤独、贫穷和痛苦的整个世界,都是对人类理想生活的嘲讽。我渴望能减少这些不幸,但无能为力,这也是我的痛苦。
这就是我的一生。我发现人生是值得的;而且如果能够再有一次这样的机会,我会欣然接受。