leetcode常见问题

 开学了 开始每日刷leetcode了  ,开一个新分类记录做题过程和心得。

 

1.出现本地调试无问题但提交后报错时,很有可能是全局变量导致的,解决办法

(1).尽量写成局部变量,函数尽量传参进入。

 

(2).多提交几次碰运气 。

 

2.对于使用algorithm的sort的自定义cmp的话,自定义的cmp前面要加static,这里的话其实原因与sort的调用有关。

这是跟sort函数的定义有关系的,下面是sort函数的源码:

template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

可以知道其实我们写参数cmp时,是把函数名作为实参传递给了sort函数,而sort函数内部是用一个函数指针去调用这个cmp函数的,我们知道class普通类成员函数cmp需要通过对象名.cmp()来调用,而sort()函数早就定义好了,那个时候哪知道你定义的是什么对象,所以内部是直接调用的cmp()的。但是在我们写的时候,cmp很多人肯定写在了solution这个class里面,那么真的调用到我们自定义的cmp,实际上需要通过对象名.cmp()这一形式,这样很显然我们的sort找不到我们这里自定义的cmp函数部分。因此,解决办法可以是:

1.添加static,由于static静态成员函数不用加对象名,就能直接访问函数(这也是静态成员函数的一大优点)所以加了static就不会报错。

2.将整个的自定义的cmp写在外部,即写在class solution的大括号之外,这样很显然就是一个全局函数了,那自然也可以直接使用cmp()调用到。


这个问题也告诉我们,对于leetcode这种实际上答案部分是在一个class中执行的情况,很多时候需要考虑的内容不止是解法,也要考虑代码运行环境。与我们全部是自己编写输入和输出以及逻辑内容的,平台只测试输入输出是否符合的那种平台相比,要针对代码的实际运行位置选择合适的代码和库。

 

 

3.出现数据初始定义时候刚好与测试值可能一致而刚好又需要计数 此时发生计数错误 因此数据初始化时候尽量选择999999999此类。(这是oj比较多的定义办法了)

4.注意如果输出函数也是占时间的,自己的调试输出内容在提交时候最好注释掉,虽然不注释的话也不影响最后的判题结果。尤其是是java这类以及c++的cout,这些在刚好卡到超时边缘时候也许就是最后一根稻草。

暂定一个计划 在找工作前刷够1000题  (500/1000)(水题视情况会跳过)

其他以后慢慢踩坑施工

本文作者:zzzlight

本文链接:https://www.cnblogs.com/zzzlight/p/13724875.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   zzzlight  阅读(512)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起