首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >20180902_ARTS_week10

20180902_ARTS_week10

作者头像
Bob.Chen
发布2018-09-27 11:33:35
3120
发布2018-09-27 11:33:35
举报

第十周,算法题 Container With Most Water,看了一篇介绍 VS Code 插件和技巧的文章,介绍一个做圆形轨迹拖动时用向量来计算顺时针逆的方法,继续分享了阅读《暗时间》时关于逆人性的一些感想。

Algorithm

/**
 * 
 * Container With Most Water
 * https://leetcode.com/problems/container-with-most-water/description/
 * 
 * @param {number[]} height
 * @return {number}
 */
var maxArea = function (height) {
    var area = 0,
        left = 0,
        right = height.length - 1;

    while (left < right) {
        var curLeftHeight = height[left];
        var curRightHeight =height[right];
        var curHeight = Math.min(curLeftHeight, curRightHeight);
        var tmpArea = curHeight * (right - left)

        if (tmpArea > area) {
            area = tmpArea;
        }

        if (curLeftHeight < curRightHeight) {
            left += 1;
        } else {
            right -= 1;
        }
    }

    return area;
};

console.log(maxArea([1, 8, 6, 2, 5, 4, 8, 3, 7]) ) // 49

这周因为有些事情忙,挑了条 easy 难度的题。整个思路比较简单,算面积嘛,然后左右两边分别有两个游标,哪个低了哪个就往中间移动一格。复杂度 O(n)。

Review

Pro tips for Visual Studio Code to be productive in 2018

https://medium.com/@i_AnkurBiswas/pro-tips-for-visual-studio-code-to-be-productive-in-2018-d5252e914561

文章中作者介绍了几个 VS Code 的插件和几个使用技巧,挑几个实用的说说。

  1. Gitlens。 这是一个插件,用来告诉你每一行代码是由何人何时提交的。
  2. Live Share。同样是个插件,据说可以实时共享 workspace,实时修改,小组 debug。特别适合远程讨论的场景。不过注意还是开发者预览版本。
  3. Json to Code。这个插件感觉会很有用,当你的 API 是 json 的时候,可以通过 json 数据直接生成对应的强类型的结构代码。支持生成 TypeScript,Python,Go,C#,Java,JavaScript 等等。
  4. 全局改名。这个小技巧就是当改变变量或者方法名时,通过 F2 可以改变调用的地方,如果只想改当前文件,可以用 Command + F2 或者 Ctrl + F2
  5. 同时修改多行。这个技巧用过 sublime text 的应该很熟悉,就是多点几个光标出来,然后同时操作。文章中说是 Option,我 Mac 是实测是 Command,可能跟我用的是 sublime 的键位有关系。
  6. 保存全部。这个功能的快捷键并没有默认提供,可以自己在 Keyboard Shortcuts 创建。

Tip

记录一下之前页面上要做一个效果,一个图片要能在页面上的一个固定的圆形路径上拖动。这里有个难点就是顺时针和逆时针的判断。

因为通过三角函数,我们算出来的角度是不会大于 180 度的,假设用户从12 点方向开始拖动,到六点方向之后,继续拖,角度就变成 179 度了,如果不知道方向就没办法继续定位了。

这里可以用向量叉积的方法来判断顺时针还是逆时针。

设圆心,起始点,移动的点分别为 A(x1,y1),B(x2,y2),C(x3,y3),顺次连接 A,B,C 组成三角形,AB 边和 AC 边的的向量分别为:

AB=(x2-x1,y2-y1) AC=(x3-x1,y3-y1)

则 AB 和 AC 的叉积为

 |x2-x1, y2-y1| 
 |x3-x1, y3-y1|

值为:(x2-x1)*(y3-y1) - (y2-y1)*(x3-x1)

如果 AB*AC>0,则三角形ABC是逆时针的 如果 AB*AC<0,则三角形ABC是顺时针的

这样就可以算出来拖动的时候是逆时针还是顺时针,之后就可以争对性的做处理了。

Share

继续分享看《暗时间》中的一些感想。

在『逃出你的肖申克』一节中讲到人的一些天性和习惯,比如我们天性是目光短浅,只看到眼前利益,也许这在物质匮乏有上顿没下顿的远古社会是再正常不过的了;比如我们总说『说起来容易,做起来难』,习惯的力量远远大于我们想象,听到一番很有道理的话后,看似有些领悟,可能过几天不注意又故态复萌了。

这是由于很多天性是在远古社会选择适应的,并不适应短短几百年我们才迈入的现代社会。

就像学习一样,是个逆人性的过程。坚持做事情同样也是如此。

这个也和《人类简史》一书中说的暗暗相通,人们对糖分的追求是刻在骨子里的,远古社会资源匮乏,而糖分是主要的热量来源,所以数万年来人类祖先都在渴求糖分,这也传承在我们的基因里。 到了现代社会,资源已经极大的丰富,理论上来说不需要吃大量的糖分,但人们还是忍不住,因为这个不是由我们身体决定的,而是我们的天性,所以减肥很痛苦,也是一个逆人性的过程。

有时候从天性,从传承的角度来看我们自己的种种行为,会觉得特别有意思。


碎碎念

记录一些所思所想,写写科技与人文,写写生活状态,写写读书心得,主要是扯淡和感悟。 欢迎关注,交流。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Algorithm
  • Review
  • Tip
  • Share
  • 碎碎念
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档