1.Algorithm
递归方法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
public TreeNode buildTree(int[] preorder, int[] inorder) {
int n = inorder.length;
for (int i = 0; i < n; i++) {
hm.put(inorder[i], i);
}
return helper(preorder, inorder, 0, n - 1, 0, n - 1);
}
public TreeNode helper(int[] preorder, int[] inorder, int preleft, int preright, int inleft, int inright) {
if (preleft > preright) {
return null;
}
TreeNode root = null;
int rootidx = hm.get(preorder[preleft]);
root = new TreeNode(inorder[rootidx]);
int distance_size = rootidx - inleft;
root.left = helper(preorder, inorder, preleft + 1, preleft + distance_size, inleft, rootidx - 1);
root.right = helper(preorder, inorder, preleft + distance_size + 1, preright, rootidx + 1, inright);
return root;
}
}
2.Review
Data Structures - Greedy Algorithms
设计了一种算法来实现给定问题的最优解。贪心算法是根据给定的解域进行决策。由于贪心,总能在最优解决方案找到最佳解决方案被选择。
贪婪算法试图找到局部最优解,最终可能导致全局最优解。然而,贪婪算法通常不提供全局优化的解决方案。
数硬币
这个问题是通过选择最小可能的硬币来计算到一个期望的值,而贪心的方法迫使算法选择最大可能的硬币。如果我们提供的硬币₹1、2、5和10,我们被要求计数₹18那么贪婪的过程:
- 1−选择一个₹10枚硬币,剩下的数是8
- 2−然后选择一个₹5枚硬币,剩下的数是3
- 3−然后选择一个₹2硬币,剩下的数是1
- 4−最后,选择一个₹1硬币解决问题
虽然,它似乎工作良好,对于这个数硬币结果,我们只需要挑选4枚硬币。但如果我们稍微改变问题,那么同样的方法可能不能产生同样的最佳结果。
在货币系统中,我们有1、7、10值的硬币,数18值的硬币绝对是最优的,但数15值的硬币可能会比需要的硬币多。例如,贪心方法将使用10 + 1 + 1 + 1 + 1 + 1 + 1,总共6枚硬币。而同样的问题可以用3个硬币解决(7 + 7 + 1)
因此,我们可以得出这样的结论,贪心方法选择一个局部优化的解决方案,并在要考虑全局化成时可能失败。
示例
大多数网络算法使用贪婪的方法。这里列出了其中的一些:
- Travelling Salesman Problem
- Prim's Minimal Spanning Tree Algorithm
- Kruskal's Minimal Spanning Tree Algorithm
- Dijkstra's Minimal Spanning Tree Algorithm
- Graph - Map Coloring
- Graph - Vertex Cover
- Knapsack Problem
- Job Scheduling Problem
有很多类似的问题使用贪婪的方法来寻找最优解。
3.Tips
怎么读写“名词性从句
相关概念
句子类型:陈述句、疑问句(一般、特殊)、祈使句、感叹句
句子句型:主谓、主谓宾、主谓双宾、主谓宾补、主系表
名词从句:它在主句中充当名词成分,可充当主语从、宾语从、表语从、同位语从句。
-
连词:从句类型不同,对应不同的连接;连接的意义,用来识别成句,明确主句与从句的逻辑语义。连词与句型关系如下:
-
语序:每类从句类型的语序相比正常句型,会有些不同,不同从句类型的语序如下:
it形式主语
that主语从句句型1:It is + 形容词 + that + 完整的陈述句
that主语从句句型2:It is + 名词 + that + 完整的陈述句
that主语从句句型3:It is + 过去分词 + that + 完整的陈述句同位语从句、表语从句、定语从句的的理解和区分
同位语是对名词的补充说明,二者一起构成一个名词短语,然后在句中作主语、宾语等名词性成分。
同位语其实也是一种补足语,是对名词的补充。
同位语从句是名词短语的组成成分,而表语成句是句子的基本成分
读从句具体步骤
- 定从句类型(3类从句),如要定从句类型,需要找出主句(看连接和动词)看从句在主句充当什么成分即可得出。
- 如果是名词从句,则明确充当什么成分(主、宾、表、同)和从句类型(陈述、疑问),再分别翻译主句和从句的意思,然后通过连词联系起来翻译。
要点注意
双宾从句
连接的用法
动词对句子从分的影响
4. Share
本周分享一段话:
微软技术支持部门,要接受来自客户的产品质询。
怎么考核团队的工作?
微软设计了三个指标:
A、解决每个问题的时间。这是员工自己记录的;
B、解决问题的个数;
C、有效工作总时间。这个数字,就是A和B的乘积。
A越短越好,这代表技术能力;B越多越好,这代表工作量;C越长越好,这代表努力程度。
三个指标之间的平衡关系,A x B = C,有效杜绝了员工只关注一点、偏废其他。
比如,有的员工为了展现技术能力,用2小时解决问题,他记录成1小时。
但因为A x B得出的C,他的有效工作总时间就会减半,显得很不努力。
有的员工为了展现努力程度,工作8小时,想显得工作了16小时。
A x B = C,因此,他必须把用2小时解决的问题,记录成4小时。
但这样就显得他的技术能力不行,解决问题的时间比同事长很多。
这三个指标的平衡性,几乎杜绝了技术支持员工,只关注一点、偏废其他的可能性。
感想:
类似于线性回归,各点(每位技术员工的指标)维持在一条线的周边属于正常。
美国的土地征收,也是这么个原理。在特定区域内,根据房产税和房屋价格,有一个补偿系数,如果你对这个系数不认同,可以多要,但同时你需要补交之前少交的房产税,所以美国拆迁不存在钉子户的情况。因为中国没有这样制衡措施,拆迁一次,产生很多百万 千万富翁。