第二周-ARST打卡

1.A——练习

Climbing stairs:
You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

Note: Given n will be a positive integer.

Example 1:

Input:2    Output:2    Explanation:There are two ways to climb to the top.1. 1 step + 1 step2. 2 steps

Example 2:

Input:3    Output:3    Explanation:There are three ways to climb to the top.1. 1 step + 1 step + 1 step2. 1 step + 2 steps3. 2 steps + 1 step


最后实现代码如下:

class Solution:

    def climbStairs(self, n: int) -> int:

        if n<=2:

            return n

        a = 1

        b = 2

        Sum = 0

        while n >2:

            Sum = a+b

            a=b

            b = Sum

            n=n-1

        return Sum

总结:这道题主要考察了斐波那契数列的应用,做题的时候参考了递归写法,但这种写法容易超时,后来加以改进终于解决了这个问题。

2.R——阅读

在机器学习领域中,Scikit-learn是每一个初学者需要基本了解的一个Python模块,它集成了各种最先进的机器学习算法,适用于中等规模的监督和无监督问题。

以下是说明文档:

http://www.jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf


3.S——分享

Papers We Love是一个集中了大量计算机科学相关论文的网站,同时也是很多技术爱好者的讨论社区,在Github上还有大量开源代码。该网站有视频区,视频区内有大量前沿论文的讲解,英语原声,有利于锻炼听力。

Papers We Love

4.T——技巧

前段时间在知乎上看到有人提到程序员的基本素养,并且提出了一个值得深思的问题:为什么有的程序员写的代码,过了几个月后连他们自己都看不懂了?

原因有大致四点:①面向过程写代码:写代码前没有对自己的代码进行设计,太过随心所欲,以“只要能实现功能”这样的心态写出来的代码将是十分难以维护的。

②代码缺少必要注释:无法快速了解代码的功能,白白增加了维护时的时间成本。

③代码变量名称太过随意:出现太多类似于“abcd”、“temp”这种一看无法知晓其真正含义的变量名。

④每个方法分工不明确:一个方法夹杂太多别的功能,让人看了之后不敢轻易维护。

为了杜绝以上四种问题,未来写代码的时候可以尝试:

①实现功能之前先仔细设计代码,做到结构一目了然。

②注释要尽量写的详细且扼要,避免冗余。

③不要随意定义临时变量。

④不要写太过晦涩的代码,尽量避免复杂的嵌套。





你可能感兴趣的:(第二周-ARST打卡)