leetcode学到的东西

寒假本来是打算开始公司新项目,结果美工太拖了。于是一边搞其他东西,一边做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所有题目。有梦想的人不睡觉。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容