ARTS打卡42-20小时入门新技能

Algorithm做算法题,Review点评英文文章,Tip总结技术技巧,Share做技术分享。每周打卡一次,这就是ARTS打卡。

1. 做算法题

LeetCode593题. 有效的正方形

题目描述:

给定二维空间中四点的坐标,返回四点是否可以构造一个正方形。

一个点的坐标(x,y)由一个有两个整数的整数数组表示。

示例:

输入: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
输出: True

注意:

所有输入整数都在 [-10000,10000] 范围内。
一个有效的正方形有四个等长的正长和四个等角(90度角)。
输入点没有顺序。

**解题思路:**从两个点坐标可以得到两点连线的向量,如p1p2_v = [p2[0] - p1[0], p2[1] - p1[1]],向量之间的内积为0可以判断是否两边夹角直角,向量的长度可判断两边长度是否相等。注意要排除共点情况(向量长度为0)。

解题代码:

class Solution:
    def validSquare(self, p1: List[int], p2: List[int], p3: List[int], p4: List[int]) -> bool:
        p1p2_v = [p2[0] - p1[0], p2[1] - p1[1]]
        p1p3_v = [p3[0] - p1[0], p3[1] - p1[1]]
        p1p4_v = [p4[0] - p1[0], p4[1] - p1[1]]
        p4p2_v = [p4[0] - p2[0], p4[1] - p2[1]]
        p4p3_v = [p4[0] - p3[0], p4[1] - p3[1]]
        p3p2_v = [p2[0] - p3[0], p2[1] - p3[1]]
        p3p4_v = [p4[0] - p3[0], p4[1] - p3[1]]
        p2p3_v = [p3[0] - p2[0], p3[1] - p2[1]]
        p2p4_v = [p4[0] - p2[0], p4[1] - p2[1]]
        if (p1p2_v[0] * p1p3_v[0] + p1p2_v[1] * p1p3_v[1]) == 0:
            if (p4p2_v[0] * p4p3_v[0] + p4p2_v[1] * p4p3_v[1]) == 0 and p1p2_v[0]*p1p2_v[0] + p1p2_v[1]*p1p2_v[1] ==  p1p3_v[0]*p1p3_v[0] + p1p3_v[1]*p1p3_v[1] and p1p2_v[0]*p1p2_v[0] + p1p2_v[1]*p1p2_v[1] > 0 and p3p4_v[0]*p3p4_v[0] + p3p4_v[1]*p3p4_v[1]>0:
                return True

        elif (p1p2_v[0] * p1p4_v[0] + p1p2_v[1] * p1p4_v[1]) == 0:
            if (p3p2_v[0] * p3p4_v[0] + p3p2_v[1] * p3p4_v[1]) == 0 and p1p2_v[0]*p1p2_v[0] + p1p2_v[1]*p1p2_v[1] ==  p1p4_v[0]*p1p4_v[0] + p1p4_v[1]*p1p4_v[1] and p1p2_v[0]*p1p2_v[0] + p1p2_v[1]*p1p2_v[1]>0 and p3p4_v[0]*p3p4_v[0] + p3p4_v[1]*p3p4_v[1]>0:
                return True
            
        elif (p1p3_v[0] * p1p4_v[0] + p1p3_v[1] * p1p4_v[1]) == 0:
            if (p2p3_v[0] * p2p4_v[0] + p2p3_v[1] * p2p4_v[1]) == 0 and p1p3_v[0]*p1p3_v[0] + p1p3_v[1]*p1p3_v[1] ==  p1p4_v[0]*p1p4_v[0] + p1p4_v[1]*p1p4_v[1] and p1p2_v[0]*p1p2_v[0] + p1p2_v[1]*p1p2_v[1]>0 and p3p4_v[0]*p3p4_v[0] + p3p4_v[1]*p3p4_v[1]>0:
                return True
        return False
        

2.点评英文文章

TED演讲The first 20 hours—how to learn anything介绍了快速学习新技能的有效方法。一万小时定律已经深入人心,成为某个领域的专家需要一万小时的专注练习。一万小时意味着每天全身心投入,至少要5年时间才能成为专家,很高的一座大山。这个TED演讲者介绍说进入一个新的领域达到一定水平不需要那么就,20小时就够了。演讲者给出了具体的方法,而且现场表演了学习20小时后弹奏乌克里里,对于外行来看,他的演奏水平已经达到了独立伴奏的水平。

3. 技术技巧

正则表达式博大精深,稍微复杂一点就容易把人绕晕。regexper](https://regexper.com/)是一个图形化展示正则筛选过程的工具,输入正则表达式,自动生成筛选的逻辑,清晰明了。

4. 技术分享

项目管理开展中需要对问题跟进、指派、跟踪、闭环,如果靠项目管理人员手工记录、当面催促、推诿扯皮,存在信息不对称的问题。禅道是专业的研发项目管理软件,Windows下安装部署比较简单,可以快速启动服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值