1.Algorithm
class Solution {
List<List<Integer>> res = new ArrayList<List<Integer>>();
public List<List<Integer>> combine(int n, int k) {
backtrack(1, n, k, new LinkedList<Integer>());
return res;
}
public void backtrack(int s, int n, int k,LinkedList<Integer> cur) {
if (cur.size()==k) {
res.add(new LinkedList<Integer>(cur));
return;
}
for (int i = s; i < n+1; i++) {
cur.add(i);
backtrack(i+1, n, k, cur);
cur.removeLast();
}
}
}
2.Review
Data Structures - Divide and Conquer
在分治解法中,处理中的问题被分解为更小的子问题,然后每个子问题被独立地解决。当我们不断地将子问题分解为更小的子问题时,我们最终可能到达一个无法再进行分解的状态。
那些“原子的”最小可能的子问题(分数)被解决。最后将所有子问题的解合并,得到原问题的解。
Those "atomic" smallest possible sub-problem (fractions) are solved. The solution of all sub-problems is finally merged in order to obtain the solution of an original problem.
从广义上讲,我们可以从三步中理解的分治解法。
Divide/Break
这一步包括将问题分解为更小的子问题。子问题应该代表原始问题的一部分。这一步通常采用递归方法来分割问题,直到没有子问题可以进一步分割。在这个阶段,子问题在本质上成为原子问题,但仍然代表实际问题的一部分。
Conquer/Solve
这一步接收到许多要解决的小子问题。一般来说,在这个层次上,问题被认为是自己“解决”了。
Merge/Combine
当较小的子问题被解决时,这一阶段递归地合并它们,直到它们表示出原始问题的解决方案。这种算法方法是递归工作的,而conquer&merge步骤是如此接近,以至于它们看起来像一个整体。
示例
下列计算机算法是基于分治编程解法
- Merge Sort
- Quick Sort
- Binary Search
- Strassen's Matrix Multiplication
- Closest pair (points)
有各种各样的方法可以解决任何计算机问题,但是上面提到的是分治方法是一个很好的例子。
3.Tips
沟通技能之目的管理
明确沟通目的,是开启沟通很重要的第一步。
沟通目的的定义:
为什么沟通?通过沟通后,期望对方给你什么样的回应?通过沟通期望达到一个什么样的结果。
沟通前,为什么要明确并说清楚沟通目的
- 聚焦沟通目的,使沟通对象在方向上保持一致,更容易理解你接下来所要说的内容
如果沟通一开始,就直接讲细节的内容,观众听了半天也不知道,你这次会议想干嘛,或者观众会去猜这个目的,显然很多时候都会猜错,严重影响沟通效率。
- 有了明确的沟通目的,沟通才有意义,也方便你组织沟通内容
好比给了一个题目让你写作文,只要在完全理解题目的要求后,你写的内容才有意义,不会写一半发现自己没想清楚,沟通也是如此,沟通中讲的内容要与你的沟通目的相符才会有意义,避免做无意义的沟通。
- 有了明确的沟通目的,在沟通中不会轻易变换沟通话题
有一种更常见的情况是这样的,沟通过程中聊起了另一个话题,在这个话题上俩人争执不下,把本来要沟通的目标给抛到九霄云外了,最后不欢而散。
让沟通当成一个正式的工作内容,不要在没想清楚目的时随便开启沟通
发起沟通容易,让沟通有效没我们想的容易。我们就很容易动不动发起个电话会议或者临时会议,沟通一些不重要、甚至我们自己就能解决的事情。这样做不好在哪里呢?你会在对方心里埋下一颗“不专业”的地雷,你在浪费对方的时间,后期的沟通就很可能引爆这颗地雷,出现冲突。所以,类似电话沟通这样的形式,沟通前一定要想清楚目的是啥,和同事或客户预约的时候也要同步好沟通主题,确保双方的预期是一致的。
案例:
项目例会,是我们很常见的会议,但在很多时候是这样的流程,成员A汇报他的工作(做了什么、有什么问题、今天将做什么),B汇报下他的工作......项目经理针对汇报给出建议。这个例会有没有达到预期目标,可以说达到了,也可以说没有达到。因为这完全看你们的例会目的有哪些?也可以理解学东西不要只学样子要学本质,我认为例会的目的就是本质。
项目例会常见的目的有:
- 回顾昨天会议纪要
- 回顾昨天工作,确保项目进度正常
- 收集项目中的问题和可能存在的风险
- 确保每位同事对自己要做的事情有清晰的认识
- 对每位成员做的工作提供建议和要求,避免理解不一致和方向的偏离
- 关心组员状态,发现有情绪异常的组员
- 鼓励组员,提升士气
如果项目经理在开会的时候心中有上述目的,在听组员汇报时会询问很多相关的问题,也知道会议上要讲什么不讲什么,否则可能只是听听而已。
如何确保沟通目的已经明确
- 把自己的沟通目的拿出来读一两次,感觉下是否有必须沟通,是否清晰。
- 尝试回答下你沟通中的问题,自问自答。
4.Share
瓜达尔港详情
读“瓜达尔港”对中国的战略意义:
瓜德尔港启用,加强了中国的能源安全与国际影响力亚时报曾撰文指出,中国为确保能源输送路线的安全,采取了不少举措,与中东到南中国海的沿岸各国,建立战略关系。瓜德尔(Gwadar)港便是其中的一颗“珍珠”。中国自2001年就开始参与开发俾路支省的瓜德尔深水港及经济特区,背后推动因素是瓜德尔的战略位置。
对中巴两国来说,瓜德尔港的战略意义非常突出。对巴基斯坦来说,瓜德尔离印度的距离很重要。瓜德尔在卡拉奇(巴基斯坦2001年90%的海上贸易都是在这里进行)西部725公里处,也就是说它比卡拉奇离印度远725公里,这为巴基斯坦沿海岸线一带提供了关键的战略纵深。
它位于具有重要战略意义的波斯湾 ,紧扼从非洲、欧洲经红海、霍尔木兹海峡、波斯湾通往东亚、太平洋地区数条海上重要航线的咽喉。瓜德尔距离全球石油供应的主要通道——霍尔木兹海峡大约400公里。
感想:
看到连接瓜达尔港的中巴铁路,让我想起了汉武帝打通“河西走廊”对后世的中原带来非凡战略意义,发展了中原的经济也极大保障中原的安全。
通过读此文章,加深了我对战略的认知,用维度的思维来讲,好比高维与低维的竞争,选择具有重大意义的战略好比高维。如何有卓越的战略眼光?个人觉得,读史培养战略意识,找前辈学习。