写点什么

2022 ARTS|Week 03——生活不奖赏心血来潮,也不奖赏你赋予的特殊含义某一天,无论日子过得如何,不要停止。

作者:MiracleWong
  • 2022 年 1 月 23 日
  • 本文字数:2792 字

    阅读完需:约 9 分钟

2022 ARTS|Week 03——生活不奖赏心血来潮,也不奖赏你赋予的特殊含义某一天,无论日子过得如何,不要停止。

ARTS 是极客时间推出的一个打卡活动,通过 100 天的关于 Algorithm、Review、Tip 和 Share 的刻意训练,来实现进阶。

1. Algorithm

要求:每周至少做一个 LeetCode 算法题,为了编程训练和学习。


实际时间花费:10 分钟

算法题目

算法题链接:11. 盛最多水的容器(container-with-most-water)


给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。

题目分析

题目的理解:题目的本质,实际上寻找两根垂直线所组成的矩形的面积的最大值。其中,垂直线 i 的有两个端点组成,两个端点分别为 (i, ai) 和 (i, 0)。这是数学意义上的抽象的线,没有实际的宽度和高度。第一次理解的时候,我以为还要将整体矩形的面积减去每条线所组成的黑色的矩形的面积(如图所示)。


方案 1:暴力解法,双重循环,找到所有可能的垂直线的组合方式,将其组成的矩形值记录,并求出最大值。


时间复杂度:O(n2)空间复杂度:O(1)


方案 2:暴力解法,双指针,一个指针指向最前,一个指向最后,比较两个垂直线的高低,低的一方向高的一方移动(为什么不是高的向低的移动:因为面积=高度(两相比较的低的一方)* 宽度(两条线的距离),高的向低的一方移动,面积不会有增大的改变;而低的向高的移到,虽然宽度减少,但有可能高度增加使得总体面积增加)


时间复杂度:O(n)空间复杂度:O(1)

代码

通过 Java 来对算法进行实现,之前做过。


public class Solution {    public int maxArea(int[] height) {        int maxarea = 0, i = 0, j = height.length - 1;        while (i < j) {            maxarea = Math.max(maxarea, Math.min(height[i], height[j]) * (j - i));            if (height[i] < height[j])                i++;            else                j--;        }        return maxarea;
复制代码

2. Review

阅读并点评至少一篇技术文章,通过英文技术文章来学习英文。


实际时间花费:60 分钟


文章链接:How to learn things at 1000x the speed

我的点评

  1. 一篇非常好的介绍程序员学习的文章,通过已有的旧知识,来快速的学习新的知识。The more you learn, the faster you can learn.也就是我们所说的「触类旁通」。

  2. 有两点比较反直觉的地方:(1) The best resource is a bit of a lie - it’s really just the one that’s best for you, given your prior experiences and the medium you enjoy. 适用于你自己的资源更好,不要在乎它是不是最好的。 (2) Stop. This is counter-intuitive, but unless you want to become a master at something, you really just want to know everything at an intermediate level. 在你达到中等水平的时候 Stop 就可以了。

3. Tip

学习至少一个技术技巧,为了总结和归纳日常工作中遇到的知识点。


实际时间花费:25 分钟

技巧

git log:查看提交历史(当前分支)git log -all:查看所有分支提交历史git log -p -2:-p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新--word-diff:选项,显示单词层面的变化,在书籍、论文这种很大的文本文件上进行对比时,有作用。git log --stat:--stat选项,仅显示简要的增改行数统计git log --pretty:指定使用完全不同于默认格式的方式展示提交历史,默认为short    git log --pretty=short    git log --pretty=full    git log --pretty=fuller    git log --pretty=oneline 将每个提交放在一行显示,这在提交数很大时非常有用    git log --pretty=format:"%h - %an, %ar : %s":简短哈希,作者名称,修订日期(按多久以前的方式显示),提交信息git log --oneline:将每个提交放在一行显示,commit信息显示前6位,--oneline 等同于 --pretty=oneline --abbrev-commit 的写法git log --oneline --graph:--graph,形象地展示了每个提交所在的分支及其分化衍合情况git log --since=2.weeks:--since, --after,仅显示指定时间之后的提交。git log --until="2008-11-01":--until, --before 仅显示指定时间之前的提交。git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \--before="2008-11-01" --no-merges --  t/  :作者,-t路径下
复制代码

我的学习

  1. MacOS 上的 Dash 中有个“Oh-My-Zsh Git”的快捷命令的合集,需要配合 iTerm2 + Zsh + Oh-My-Zsh 和 Git 插件使用,非常的方便。

4. Share

分享一篇有观点和思考的技术文章,为了建立影响力、输出价值观。


实际时间:40 分钟


文章链接:



自己之前的文章:


我的学习和反思

在我看来,「新一年」,和每一年、每一天、每一个时刻都没有任何不同,都是从一个刹那到下一个刹那流逝的结果。而不论你想做什么,想成为什么,都不需要等到新一年,或者等到任何一个时刻,现在就可以开始。——张潇雨

不论世界如何运转、环境怎样变迁,如果我们能始终泰然处之、观心观己,让发生的事情、产生的情绪穿过自己的身体,那怎样的变化都会成为一种不变,也让我们更加接近真理。——张潇雨

最后一件我们经常忘掉的事,就是能定义我们是谁的人只有我们自己,而不是任何别的东西。不要把评价自我和解释世界的权利让渡给他人,每个人的存在与被爱的权利都是顶天立地的,不需要任何理由的。——张潇雨


  1. 每个人都说要坚持和自律,其实这是很难的一件事情,「看似简单,实则很难」,人们总是高估决定性时刻,却低估每一天的微小行动。

  2. 比如自己,在 2020 年写了 4 篇文章后,无疾而终,现在回想起来,都不知道后面的日子,当时的自己干什么去了。2021 年的自己又干了些什么。

  3. 自己成长最快的时间段,恰恰是比较忙碌压力比较大的时候,那段时间,恨不得吃饭的时候也看技术类的文章和书籍,都是边学边操作的,技术的能力增长也就是这样得来的;而真正大把时间的时候,则是各种的「躺」,恐惧还没有发生的事情,那些曾经『我有时间了就去做的事情』,倒是一件也没有去做。更多的时候,却是拖延和破罐子破摔,“周一周二还早,等一下无妨”“都周末了现在已经来不及了,下周再开始吧”这样的循环不知道经历了多少次了。为了逃避真正重要的事情,可以做任何的事情,反正是消磨时间而已,谁不会呢?我总是高估某一天的意义,比如,今天是这个月的最后一天,再吃最后一次夜宵外卖吧,明天就开始减肥,然而并没有什么用处,你会发现这样被自己「赋予特殊」意义的日子数不胜数,到头来并没有什么意义?反而不如实打实的努力在每一天里。

  4. 生活不奖赏心血来潮,也不奖赏你赋予的特殊含义某一天,无论日子过的如何,不要停止。

发布于: 刚刚阅读数: 2
用户头像

MiracleWong

关注

Hello World, Hello Miracle! 2017.10.24 加入

运维开发工程师!

评论

发布
暂无评论
2022 ARTS|Week 03——生活不奖赏心血来潮,也不奖赏你赋予的特殊含义某一天,无论日子过得如何,不要停止。