每周完成一个ARTS:
每周至少做一个LeetCode的算法题,阅读和点评至少一篇文本技术文章,学习至少一个技术技巧,分享一篇有观点和思考的技术文章(也就是algorithm ,preview ,tip,share 简称ARTS)需要坚持至少一年。
Algorithm
一道算法题:
,这道题算法很经典,很美。
class Solution { public int longestValidParentheses(String s) { char[] chars = s.toCharArray(); return Math.max(findMax(chars, 0, 1, chars.length, '('), findMax(chars, chars.length -1, -1, -1, ')')); } public int findMax(char[] chars,int i,int flag, int end, char cTem) { int sum=0,max=0,currLen=0,validLen=0; for(;i != end;i += flag){ sum += chars[i] == cTem ? 1:-1; currLen++; if(sum < 0){ max = max > validLen ? max : validLen; sum = 0; currLen = 0; validLen = 0; }else if(sum == 0){ validLen = currLen; } } return max > validLen ? max : validLen; } }
Preview
每周扇贝阅读三篇文章
Tip
这周因为项目需要,学习了Axure软件画原型图,自学一个东西,能快速掌握还是很有成就感的。简单来说关键词是:元件库、属性、样式、动态面板、中继器、各种事件。记录一个比较经典的例子:,用到了所有上面说的关键词。
知乎上看到一篇《?》的文章,对结构化思维讲的特别好,主要内容摘录如下:
1. 结构化思维是可培养且价值度高的能力,几乎是最值得刻意训练的能力;2. 不存在思维清晰、沟通不清的情况,沟通不清楚就是还没思考透;3. 面对一个问题的时候,先不要马上进入细节,而要先思考框架,如果无法找到框架,列出所有信息,用自下而上提炼的方法找到框架;4. 结构要尽量符合 MECE(相互独立、完全穷尽)原则,如果不能,至少也符合 CE(完全穷尽);5. 大多数结构都是常见的类型,找不到结构的时候,可以往这些类型上面靠:二维矩阵、流程、三要素、利益相关方;6. 知识内化成能力的方法:将知识应用和融入自己的思维,来提高自己的沟通和思维能力;7. 训练结构化思维的方法:累结构、写文章、讲议题。坚持三个月必有提升,坚持半年基本形成习惯。有同伴一起练习,效果更佳。8. 如果你想继续深入研究,可以看芭芭拉明托的《金字塔原理》那本书,非常经典。