LeetCode刷题中出现的奇怪的错误及解决办法

永磁同步电机FOC控制实战:如何用线性死区补偿解决低速抖动问题(附Matlab仿真代码) 本文详细介绍了永磁同步电机FOC控制中线性死区补偿技术的工程实现方法,有效解决低速抖动问题。通过Matlab/Simulink仿真验证,该方案可将转矩脉动降低70%以上,显著提升系统稳定性。文章包含完整的数学模型构建、Simulink实现步骤及参数整定技巧,为工程师提供实用解决方案。 阅读详情
AI摘要

本文总结了作者在解答LeetCode题目过程中遇到的各种编程陷阱及解决方案,包括C++注释问题、测试用例输入错误、并查集实现细节及数组越界等常见错误。

目录

前言:

 案例1:

案例2:

 案例3:

案例4:


前言:

一般我在刷leetcode题的时候既不喜欢在Playground也不喜欢在本地编译器里面打代码,而是直接在题目后的窗口里写代码。

于是对于我这种氪不起金的玩家来说,经常就会出现奇怪的bug,找了半天也找不到。

这里就对以前遇到过的问题进行总结。


 案例1:

我找了老半天问题在哪里。发现不管在for循环后面加什么语句都会出错。 最后放到visual studio里面才发现了错误。。。

错误原因:c++注释行尾的反斜杠会将下一行也注释掉(即连接本行与下一行)!

解决办法:避免注释行末尾出现\(除非故意的)

总结:不得不承认有时不屑一顾的小基础能够在偶然的时候把自己死死卡住。但是这个问题如果在我的本地编译器里面写代码的话是很容易看出来的(因为字体变绿了)。

不过在leetcode这里面却没有任何显示!

  。。。。。。

案例2:

错误代码是:

Line 1584: rapidjson::SizeType rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>>::Size() const [Encoding = rapidjson::UTF8<char>, Allocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>]: Assertion `IsArray()' failed. (document.h)

错误原因:测试用例里面输入的不对!!!(因为当前的测试用例是我自己输入进去的)

解决办法:执行测试用例

 

总结:

所以说输入测试用例的时候要小心点。。。。

这种错误位置行数很大的错误一般不是简单的语法错误之类的,这时候思维就要扩展一下,想想别的地方有没有问题。

我找这个错误的原因找得都快把错误码背下来了。。。

 案例3:

 

代码:

 

class UnionFind{
private:
    vector<int> height;
    vector<int> parent;
    vector<int> count;
    int N;
public:
    UnionFind(int n){
        for(int i =0;i<n;++i){
            parent.push_back(i);
            height.push_back(1);
        }
        count.resize(n,1);
        N = n;
    }
    int Find(int a){//路径合并
        int pa = parent[a];
        if(pa==a) return pa;
        while(pa!=parent[pa]){
            pa = parent[pa];
        }
        if(pa!=parent[a])
            parent[a]=pa;
        return pa;
    }
    int Union(int a,int b){ //这里有返回值是对并查集模板的修改以适应要求
        int pa = Find(a);
        int pb = Find(b);
        if(pa!=pb){
            if(height[pa]>height[pb]){ //按秩合并
                parent[pb]=pa;
                count[pa]+=count[pb];
            }else if(height[pa]<height[pb]){
                parent[pa]=pb;
                count[pb]+=count[pa];
            }else{
                parent[pa]=pb;
                height[pb]++;
                count[pb]+=count[pa];
            }
            return 1;
        }
        return 0;
    }
};
struct Edge{
    int from,to,weight;
    Edge(int form,int to ,int weight):from(from),to(to),weight(weight){}
};
class Solution {
public:
    int minCostConnectPoints(vector<vector<int>>& points) {
       vector<Edge> edges;
       int N = points.size();
       UnionFind uf(points.size());
       for(int i =0;i<points.size();++i){
           for(int j =i+1;j<points.size();++j){
               int dist = abs(points[i][0]-points[j][0])+abs(points[i][1]-points[j][1]);
               edges.emplace_back(dist,i,j);
               edges.emplace_back(dist,j,i);
           }
       }
       sort(edges.begin(),edges.end(),[&](Edge a,Edge b){
           return a.weight<b.weight;
       });
       int len=0,n=1;
       for(auto& e:edges){
           if(uf.Union(e.from,e.to)){
               len += e.weight;
               n++;
               if(n==N) return len;
           }
           cout<<e.weight<<endl;
       }
       return 0;
    }
};

然后报错:

错误原因:

我在程序里面加入cout语句,发现是可以输出部分的,说明程序在编译阶段没有出问题。

然后我把代码移植到visual studio里面执行,报错说是vector的数组下标越界了,于是我仔细看了几遍程序终于找到了问题所在:

 这个地方的 参数顺序放错了 应该是i,j,dist;错误的参数导致这个并查集类里面操作的时候使vector的下标越界。

(呵呵,后来改完后发现还是这个错误,我找了老半天发现我struct Edge里面的参数from写成了form···················································)

解决办法:

找到使数组越界的原因并修改代码。

案例4:

代码: 

class Solution {
public:
    vector<int> addToArrayForm(vector<int>& A, int K) {
        vector<int>B;
        do{
            B.insert(B.begin(),K%10);
            K = K/10;
        }while(K); //之所以用do while是为了考虑到K==0的情况
        int i =1;
        vector<int>res;
        int temp = 0;
        while((A.size()-i>=0)&&(B.size()-i>=0)){
            temp+=A[A.size()-i]+B[B.size()-i];
            res.insert(res.begin(),temp%10);
            temp/=10;
            i++;
        }
 
        while(A.size()>=i){
            temp+=A[A.size()-i];
            res.insert(res.begin(),temp%10);
            temp/=10;
            i++;
        }
        while(B.size()>=i){
            temp+=B[B.size()-i];
            res.insert(res.begin(),temp%10);
            temp/=10;
            i++;
        }
        if(temp)
        res.insert(res.begin(),temp);
        return res;
    }
};

错误原因:

经过我无数次的调试终于找到了问题所在:

当B.size()=2,i=3的时候 B.size()-i是一个非常大而奇怪的数字,不是负数。

出现这种情况的原因是因为vector.size()是一个无符号整型。。。。

解决办法:

 这样写即可。

总结:

学一门编程语言的时候要打实了基础!

 

《民机适航入门指南:从法规学习到项目实践的全面解析》 适航(Airworthiness)是指航空器、其发动机、螺旋桨和其他部件在规定条件下,能够安全飞行并满足有关航空法规规定的条件。简而言之,适航代表了航空器在任何时候都能安全运营的状态。适航在民用航空领域尤为关键,因为飞机必须经过严格的适航认证才能投入商用。这些认证的目标是确保飞机能够在广泛的运行条件下保持飞行安全,从而保护乘客、机组和地面人员的生命财产安全。适航法规覆盖了飞机的整个生命周期,包括设计、制造、测试、运营、维护和报废。 阅读详情

相关推荐

11n、11ac、11ax和11be MCS表(全网最全)

1、无线协商速率介绍及计算 2、附11n、11ac、11ax 完整MCS速率表

weixin_41500064的博客 2万+

leetcode报错合集

bug

qq_62324715的博客 2321

ROS2 Nav2实战:解决rviz2显示no map received的3种实用方法(附详细步骤)

本文针对ROS2 Nav2导航栈中rviz2显示“no map received”的常见问题,提供了三种核心解决方案。深入剖析了问题根源在于ROS2生命周期节点管理、QoS策略不匹配及坐标系设置错误,并分别通过手动配置流程、集成生命周期管理器以及调优QoS策略与固化rviz2配置,给出了详细的实战步骤,确保地图数据可靠显示。

j0k1l2m3n的博客 422

LeetCode输出明明正确,为什么会报错?

如图:输出与预期结果符合,但提示解答错误。

m0_61021135的博客 1565

第二十三章 Nest集成日志框架Winston

Winston是一个非常流行的Node.js日志框架,而Nest.js是一个基于Node.js的后端框架。修改 winston.module.ts 内容如下 添加 forRoot 方法,接收 winston 的 createLogger 方法的参数,返回动态模块的 providers、exports。这里用到了 printf 的 format 函数,它可以自定义打印的日志格式 且使用了chalk 加上了颜色,并且打印了 dayjs 格式化的时间。可以看到控制台打印了自定义的 logger 的自定义。

枫ゞ的博客 1069

有限状态机FSM详解(一)

有限状态机在维基百科中的解释是: 有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 至于为什么要学FSM,FSM可以把模型的多状态、多状态间的转换条件解耦。可以使维护变得容易,代码也更加具有可读性,也更加艺术。 理解有限状态机首先需要理解整个模型。我们把灯的开关作为示例,...

benjonc的博客 5万+

leetcode:Error rendering component(力扣题目加载不出来)

leetcode:Error rendering component(力扣题目加载不出来)(解决但不知道原因)

m0_52352223的博客 2725

OpencvSharp学习笔记(一):图片的打开,保存灰度化,保存

近来萌生了学习OpenCv的想法,经过度娘得知老夫会的C#不能直接用OpenCv,只能用他的儿子OpenCvSharp与EmguCV,奈何奈何,这两玩意的资料少的出奇,只能慢慢的摸索了,EmguCV先不说,老夫找到了牛批的资料,先摸索OpencvSharp吧 首先打开VS通过Nuget安装 选择版本后点击安装就OK了. 安装完成后,引用里面就有以下的玩意儿了… 废话不多说了,在写程序前先 using OpenCvSharp 图片打开,灰度化,保存代码如下: static void Main(strin

猥琐de专注 7186

heap-use-after-free在leetcode里会报错但在playground里就没有

修剪二叉搜索树 - 力扣(LeetCode) https://leetcode-cn.com/problems/trim-a-binary-search-tree/submissions/ 我的答卷: class Solution { public: TreeNode* trimBST(TreeNode* root, int low, int high) { if (root == NULL) return root; if (!juger(root->va.

闪闪的红星的专栏 588

AI翻译工具自动翻译日语视频生成srt中文字幕,支持离线轻松生成任意日语视频字幕!可选择支持显卡模式和cpu模式低显存也能用

【AI离线字幕神器:日语视频一键转中文字幕】推荐一款基于Faster-Whisper的本地化字幕工具,可离线生成日语视频的中文字幕(.srt格式),支持CPU/GPU加速处理。实测1小时视频最快4-5分钟完成翻译,无需联网保护隐私。操作简单只需拖拽文件,支持批量处理音频(mp3/wav)和视频(mp4/mkv)文件,还能自定义输出格式和参数调整。特别适合需要观看无字幕日语资料的用户,堪称技术宅必备神器。下载地址附后,包含详细使用教程和参数配置说明。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1万+

117、HDR多帧融合算法:曝光序列、运动鬼影消除与合成权重的高效实现

HDR多帧融合算法实战经验总结 本文分享了HDR多帧融合算法在实际应用中的关键技术和优化经验。主要内容包括: 曝光序列设计:强调动态调整曝光时间比、帧间间隔和拍摄顺序的重要性,特别指出短-中-长的拍摄顺序优势。 运动鬼影消除:比较了三种运动检测方法,推荐梯度域检测方案,并强调在RAW域进行检测的必要性。 合成权重设计:提出基于高斯型权重函数的多因素考量方法,包括基础权重、运动权重和噪声权重的综合处理策略。 高效实现方案:提供NEON指令集加速的具体代码示例,包括梯度计算、权重查表和融合处理等关键步骤。 实用

zzfmlxs的博客 65

面试题 03.03. 堆盘子

题目 堆盘子。设想有一堆盘子,堆太高可能会倒下来。因此,在现实生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子。请实现数据结构SetOfStacks,模拟这种行为。SetOfStacks应该由多个栈组成,并且在前一个栈填满时新建一个栈。此外,SetOfStacks.push()和SetOfStacks.pop()应该与普通栈的操作方法相同(也就是说,pop()返回的值,应该跟只有一个栈时的情况一样)。 进阶:实现一个popAt(int index)方法,根据指定的子栈,执行pop操作。 当某个栈为空时,应

chenghaoy的博客 190

使用STM32H7点亮RGB屏幕

希望本文能对你有所帮助!RGB屏幕是一种具有红、绿、蓝三种颜色通道的显示设备,通过控制每个通道的亮度,可以显示出丰富多彩的图像和动画。要使用STM32H7控制RGB屏幕,我们需要连接适当的引脚,并编写适当的代码来控制每个颜色通道的亮度。在主循环中,我们先点亮红色通道,然后延迟一段时间,接着点亮绿色通道,再延迟一段时间,最后点亮蓝色通道,并再次延迟。需要注意的是,示例代码中的延迟循环使用了一个简单的计数器实现,但实际应用中可能需要更精确的延迟方式,例如使用定时器中断或操作系统提供的延迟函数。

QoyOle的博客 923

leetcode每日刷题计划-简单篇day1

leetcode每日刷题计划-简单篇day1 orzorz开始刷题 争取坚持每周平均下来简单题一天能做两道题吧 非常简单的题奇奇怪怪的错误orz越不做越菜 Num 7 整数反转Reverse Integer 刚开始多给了一个变量来回折腾占地方,没注意到溢出 因为有溢出,在返回的时候(int) ans 开始设置的时候设置long a...

weixin_34356310的博客 646

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

leetcode怎么用时间刷_leetcode怎么刷进步最大?

限于每个人的资历,背景,学习能力,理解能的不同,很难有标准答案,我尝试以一名初级或中级水平的背景,给出自己的建议,包括三方面内容:* 刷题注意* 如何刷* 刷题量随着时间的推移leetcode题库已经非常大。这么多题,如何刷才能更加有效率?如果你是初次刷题,建议:第一个建议:每个类型的题目至少要刷10到20到题目。树是一个类型,列表是一个类型啊,搜索中包括二分搜索,堆栈等,至少每个类型10到20道...

weixin_39804631的博客 210

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

leetcode上奇怪的解答错误

最近在leetcode上刷题,有一题的错误很奇怪,题目如下 解答的代码和报错如下: 图片: 代码: class Solution { public: void reverse(string& s, int start, int end) { for (int i = start, j = end; i < j; i++, j--) { swap(s[i], s[j]); } } void re

zzzkai666的博客 8124

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LeetCode 刷题汇总(第一阶段,随机游走)

从 0 开始 LeetCode刷题 面临毕业,为了谋求一份工作,不得已走上了刷题之路。不追求解法的性能和代码的优雅,只追求在最短的时间内写出来。 很多人喜欢给各种各样的方法起一个奇奇怪怪的名字,比如说“回溯”、“滑动窗口”等等,不懂这些,也可以做呀。你最后自己想了一个方法做出来了,其实默默地也就用了这些所谓的方法。这些题目我做完了,别人和我聊起什么回溯,我也不懂什么意思。我只知道,暴力出奇迹,干就完了。 我们做计算数学的人的长处不在于刷题,奈何这个世界这么无奈。 其实,我一直在思考,用这些小算法题去考验一

LSEC小陆的博客 1151

leetcode刷题笔记-数组1

最近开始在leetcode刷题,记录一下每日发现。因为自己python也是半吊子水平,权且当顺便学习python了。 碰到一个奇怪的错误: NameError: name ‘inf’ is not defined 解决方案:from numpy import inf 股票问题 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完...

qq_43509788的博客 557

3.9碎记——刷题+聊天

我常常在想我未来会做什么,想过很离谱的,也想过很实际的,都没再想下去了,都说不好,也说不对。

2301_76825872的博客 758

我在代码随想录|写代码|刷题总建议| Debug方法

🔥博客介绍`:🎥系列专栏:🎥 当前专栏:专题 : 数据结构帮助小白快速入门算法。

2303_79299383的博客 1182

LeetCode刷题109天复盘:面试经典150的实战修炼

算法面试的核心不在于刷题数量,而在于能否将常见数据结构与算法的原理内化为快速解题的能力。二叉树遍历、动态规划状态转移、复杂度分析等基础模型,是技术面试中反复出现的考察点。通过系统化的题库训练,可以逐步理解这些模型的适用场景与边界条件,从而应对多变的变体题。在实际面试中,除了正确性,候选人还需要清晰的思路口述与复杂度推导,这要求平时练习时注重复盘与模拟。本文基于LeetCode面试经典150的109天刷题记录,分享了从分类刷题、混合乱序到重点压缩的三轮节奏,并总结了常见易错点、自测方法以及高效复盘模板,为准备

weixin_30444111的博客 288

力扣刷题实战:差分数组、单调栈与动态规划的总结方法论

在数据结构与算法的学习路径中,差分数组、单调栈和动态规划是高频出现的核心技巧。差分数组通过端点标记实现区间快速更新,本质上是离散化的导数与积分;单调栈则借助元素间的单调性消除重复比较,将寻找边界的问题降至线性时间复杂度。这些方法在算法面试和工程实践中具有重要价值,能显著优化暴力解法的性能瓶颈。理解其原理后,结合滑动窗口、前缀和等相似结构进行对比练习,可以构建系统化的解题模板。本文以作者某次集中刷题的真实过程为样本,详细记录了选题思路、做题顺序、踩坑细节及题解提炼方法,并沉淀出可复用的模板化总结和刷题节奏方法

weixin_29279101的博客 237

力扣(LeetCode)数据库最新42题190524Oracle版(1)

排版好有颜色的文章在公众号“八哥的成长心路札记”上有,微信号是bager1912。 以下题目均来自力扣(LeetCode)官网和其他网站,仅用作数据库爱好者学习交流,严禁进行商业及任何非法用途。 5.24知晓英国首相梅姨辞职了,世界局势复杂,别说大环境不好,世界环境都不好,在位的实权派女领导人也就只剩默克尔了,人家快65岁了,还在拼,我们更应该沉下心来,踏实沉淀自己,一起努力! ...

albert184的专栏 657

奇怪的leetcode报错?

注意上面这种写法,leetcode里就会出错,下面这种就不会,原因未知。python 全局变量的定义。

qq_41413211的博客 237

C语言--奇怪错误整理

leetcode报错之:member access within misaligned address 在leetcode上做一个道体,报错如下: Line 70: Char 15: runtime error: member access within misaligned address 0xbebebebebebebebe for type 'struct ListNode', which requires 8 byte alignment (ListNode.c) 0xbebebebeb..

xiaohuima_dong的专栏 2330

【c/c++算法刷题笔记】—— LeetCode打卡09

【前言】OJ:AcWing + LeetCode 。活动:b站 大雪菜 。 动态规划02 1 最长上升子序列 题目描述 给定一个无序的整数数组,找到其中最长上升子序列的长度。 说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。 样例 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2...

Paul 的笔记库 418
上一篇: 广度优先搜索(BFS)的一个(重要!)细节(可能因此卡题)
下一篇: 如果你scrapy startproject报错找不到某个库,安装还找不到这个库,可能是因为这个原因
咖啡咖_CoffCa
博客等级 码龄6年 116粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咖啡咖_CoffCa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值