在创建对象时一定要记得初始化不指定,你永远不知道那块内存里面装了啥!血的教训,找bug找了两天。
当没有初始化时,代码如下:
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
ListNode* dummy = new ListNode;
ListNode* tail = dummy;
int num = lists.size();
while (true)
{
ListNode* cur;
int n = -1;
for(int i =0; i< num; i++){
if(lists[i] == nullptr ){
continue;
}
if(cur == nullptr || lists[i]->val < cur->val){
cur = lists[i];
n = i;
}
}
if(n == -1){
break;
}
tail->next = cur;
tail = tail ->next;
lists[n] = lists[n]->next;
}
return dummy->next;
}
};
会出现意想不到的错误如:
已完成
执行用时:4 ms
输入
[[1,4,5],[1,3,4],[2,6]]
输出
[1,4,5]
差别
预期结果
[1,1,2,3,4,4,5,6]
创建对象应该进行初始化,如下:
ListNode* cur = nullptr;
使其指向为空,才会按照你的想法呈现结果。
本文通过一个血泪教训讲述了在创建对象时初始化的重要性。作者在实现合并K个排序链表的函数时,由于未初始化`ListNode* cur`,导致程序出现意想不到的错误。修复方法是将`ListNode* cur=nullptr;`初始化为空指针,从而确保代码按预期运行。文章强调了初始化变量对于代码正确性和调试效率的关键作用。
1045

被折叠的 条评论
为什么被折叠?



