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 中国大陆许可协议进行许可。
【推荐】中国电信天翼云云端翼购节,2核2G云服务器一口价38元/年
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步