美文网首页
leetcode学到的东西

leetcode学到的东西

作者: Kair | 来源:发表于2015-02-25 09:49 被阅读419次

    寒假本来是打算开始公司新项目,结果美工太拖了。于是一边搞其他东西,一边做leetcode。熟悉了一下django,还有复习了python,学习到了很多技巧,关于python的。

    1. python的三目表达式
      python中是没有类似于PHP或者C++那些的三目表达式的,一开始我是比较纳闷的,因为python这样的语言,要是连这种语法结构都没有就太奇怪了。于是后来找到了类似的东西。
    //这是php的写法,基本相同与其他语言
    function fun()
    {
        return 1==2?1:2;
    }
    
    def fun():
          return 1 if 1==2 else 2
    
    1. python的for循环
      我在写leetcode的时候是经常使用到for循环的,因为经常有变量需要遍历,python的for循环不同与其他语言,但是我觉得使用起来其实还是蛮方便的
    #这里假设有一个叫做data的list变量
    for x in data:
    

    这样的写法是直接遍历数组变量了,遍历不了下标,有时候很需要使用下标,就要使用另外一种方法

    for x in range(len(data)):
    for x in xrange(len(data)):
    

    这两种方法是数组遍历下标的方法,但是有区别,range和xrange的速度上是不一样的,详细可以百度一下。
    有时候会遇到一种情况,需要从数组的最后一个数往前遍历,以往PHP或者java那些的做法是for循环下标往前遍历,python也能那么写,但是有些地方需要注意。

    for x in xrange(len(data)-1,-1,-1):
    

    往前循环的时候,下标是从你传入参数的第一个数开始循环的,而不是和往后循环的时候一样的。比如:xrange(9) 循环的结果是0--8,xrange(9,-1,-1)循环的结果是9--0。之前好多次写算法的时候没注意,导致数组越界。

    1. python的sort函数
      在C++中,sort函数是algorithm库中的一个函数,最实用的功能就是可以根据类的某项属性排序类,在vector这些地方非常实用,大一暑假项目实训的时候,写高考预录取信息系统,为了排序考生的成绩,C++的sort就帮了不少忙。
      python的sort也很好用,但是主要那时候我还不够熟悉。
    sort(key=lambda x:x.start)
    

    这种写法就是可以实现类排序的写法了,Merge Intervals里,第一次用上。

    1. sort 和 sorted
      具体可以百度,这里只讲一点,就是sorted会返回一个结果,sort会改变结构。

    2. python的速度
      其实python的速度相对是可以了,我在完成一道题的时候,使用了三种语言对比(C++,JAVA,PYTHON),python的速度比较中肯。

    3. 递归和迭代
      递归写起来很舒服,两三句话搞定,但是速度就太一般了,我在爬楼梯的时候,分别使用了迭代和递归,递归写起来不要太舒服。

    class Solution {
    public:
        int climbStairs(int n) 
        {
            if (n == 1 || n == 2)
                return n == 1 ? 1 : 2;
            return climbStairs(n - 1) + climbStairs(n - 2);
        }
    };
    

    超时了,无解。
    但是使用迭代,速度是2MS。

    1. 还有的想不起来了,没有及时总结,过年太颓废了,一行代码都没有写。leetcode的easy还有几道题,希望戒掉拖延症,这个学期内,利用琐碎的时间完成leetcode所有题目。有梦想的人不睡觉。

    相关文章

      网友评论

          本文标题:leetcode学到的东西

          本文链接:https://www.haomeiwen.com/subject/rbauxttx.html