当前位置: 首页 > news >正文

记录Leetcode中的报错问题

目录

  • 1. 关于链表中由head向下遍历问题
  • 2 涉及重排链表时,要将重排后的链表最后一个节点与nullptr相连
  • 3 for循环定义变量的位置不同

1. 关于链表中由head向下遍历问题

  • 如下:
    • 如果我直接使用head=head->next;往下走,就会报错
    • 只有用另一个变量next= head->next; head->next=nullptr;就不会
  • 在释放当前节点之前,先保存下一个节点的指针,以确保不会访问已经被释放的内存
  • 确保不会访问已经被释放的内存
class Solution {
public:ListNode* partition(ListNode* head, int x) {ListNode* cur1=nullptr;ListNode* pre1=nullptr;ListNode* cur2=nullptr;ListNode* pre2=nullptr;ListNode* next=nullptr;while(head!=nullptr){next=head->next;if(head->val < x){if(cur1==nullptr){cur1=head;}else{pre1->next=head;               }pre1=head;}else{if(pre2==nullptr){cur2=head;// pre2=cur2;}else{pre2->next=head;}pre2=head;}head=next;}pre1->next=cur2;return cur1;}};

在这里插入图片描述

2 涉及重排链表时,要将重排后的链表最后一个节点与nullptr相连

在这里插入图片描述

  • 对于同一个节点重复释放内存或释放后使用

程序执行完毕后,回对内存进行释放,如果不断开最后一个节点,会找到head为头部的链表节点,将head的某节点内存重复释放

class Solution {
public:ListNode* help[50000];void sortnode(vector<ListNode*>& arr,int l,int r){if(l>=r)return ;int m=(l+r)/2;sortnode(arr,l,m);sortnode(arr,m+1,r);int i=l,a=l,b=m+1;while(a<=m&&b<=r ){help[i++]= (arr[a]->val <arr[b]->val)? arr[a++]:arr[b++];}while(a<=m){help[i++]=arr[a++];}while(b<=r){help[i++]=arr[b++];}for (int k = l; k <= r; ++k) arr[k] = help[k];}ListNode* sortList(ListNode* head) {if(head==nullptr)return nullptr;int n=0;ListNode* cur=head;vector<ListNode*> arr;while(cur!=nullptr){n++;arr.push_back(cur);cur=cur->next;}if(n==1)return head;ListNode* newhead=nullptr;sortnode(arr,0,n-1);newhead=help[0];ListNode* cur1=newhead;for(int i=1;i<n;i++){cur1->next=help[i];cur1=cur1->next;}cur1->next = nullptr;//*************************return newhead;}
};

3 for循环定义变量的位置不同

for(int i=0,l=i+1,r=n-1;i<n-2;++i)

上述表示,i从0-n-3
但 l 和 r的值每次都是从1 和 n-1开始,也就是l 和i 值无关了
同时之后每次循环对r 进行也不会进行赋值为n-1
l 和r 初始化仅一次

for(int i=0;i<n-2;++i){int l=i+1,r=n-1;
}

上述只要循环一次就会给l 和 r 赋值;

http://www.lryc.cn/news/591596.html

相关文章:

  • Java数组补充v2
  • sqli-labs靶场通关笔记:第25-26a关 and、or、空格和注释符多重过滤
  • 融智兴科技: RFID超高频洗涤标签解析
  • 代码随想录算法训练营第二十三天
  • Java 中的类和对象
  • 数据结构自学Day9: 二叉树的遍历
  • Git简介与特点:从Linux到分布式版本控制的革命
  • redis中间件
  • git merge-base查看某个分支从哪里拉出来的、主main分支上的某个时间之后某人的提交合并到特定分支(使用 cherry-pick 的场景)
  • 【MySQL事务】事务的隔离级别
  • 逆向破解京东评论加密参数|Python动态Cookie解决方案
  • 开源Agent平台Dify源码剖析系列(五)核心模块core/agent之CotChatAgentRunner
  • 文字转图片的字符画生成工具
  • 今日行情明日机会——20250717
  • Web3.0 实战项目、简历打造、精准投递+面试准备
  • springboot 整合spring-kafka客户端:SASL_SSL+PLAINTEXT方式
  • 流式数据处理实战:用状态机 + scan 优雅过滤 AI 响应中的 `<think>` 标签
  • 面试高频题 力扣 200.岛屿数量 洪水灌溉 深度优先遍历 暴力搜索 C++解题思路 每日一题
  • 【Lua】题目小练1
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | GoodCheapFast(Good - Cheap - Fast三选二开关)
  • yolo8+ASR+NLP+TTS(视觉语音助手)
  • RK3566开发板调试记录:从编译配置到功能优化
  • 杰理AC70NN项目用脚本自定义添加.mk文件,直接链接进主Makefile脚本编译
  • 微服务的编程测评系统3-加密-日志-apifox-nacos-全局异常
  • 用Python实现神经网络(一)
  • RuoYi-Cloud 定制微服务
  • 微服务网站开发学习路线与RuoYi-Cloud实战指南
  • 迅速高效从web2到web3转型 ,开启远程工作
  • 验证损失判断过拟合情况
  • VTK体绘制中的抗锯齿技巧总结