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

飞舞大学生成为算法糕手Day3 | 移除链表元素、设计链表、反转链表

  • 第一题:自己做,return那里问了ai
  • 第二题:自己做,但有很多bug,一个小bug问的ai
  • 第三题:自己只想出了新建链表的方法,看了解析然后自己写的原地反转

移除链表元素

题目链接/文章讲解/视频讲解::[https://programmercarl.com/0203.移除链表元素.html]


解法

很简单的链表题,不多说。但是return的时候容易踩坑,不能直接返回head,因为有可能head被删除了,应该返回虚拟头节点的next。

class Solution {
public:ListNode* removeElements(ListNode* head, int val) {ListNode* newhead = new ListNode();newhead->next = head;ListNode* p = head;ListNode* q = newhead;while(p != nullptr){if(p->val == val){q->next = p->next;ListNode* del = p;p = p->next;delete del;}else{p = p->next;q = q->next;}}return newhead->next;}
};

设计链表

题目链接/文章讲解/视频讲解:[https://programmercarl.com/0707.设计链表.html]


解法

链表的常规题,不难,但有些麻烦,很多地方的小细节要注意,比如索引是否减一、指针是否越界等,根据索引删减时要想清楚指针该移动多少。

class MyLinkedList {
public:MyLinkedList() {head = new ListNode();size = 0;}int get(int index) {ListNode* p = head;while(index >= 0){p = p->next;if(p == nullptr) return -1;index--;}return p->val;}void addAtHead(int val) {ListNode* node = new ListNode();node->val = val;node->next = head->next;head->next = node;size++;}void addAtTail(int val) {ListNode* node = new ListNode();node->val = val;ListNode* p = head;while(p->next != nullptr){p = p->next;}p->next = node;node->next = nullptr;size++;}void addAtIndex(int index, int val) {ListNode* node = new ListNode();node->val = val;if(index > size) return;else if(index == size){ListNode* p = head;while(p->next != nullptr){p = p->next;}p->next = node;node->next = nullptr;size++;}else{ListNode* p = head;while(index > 0){p = p->next;index--;}ListNode* q = p->next;p->next = node;node->next = q;size++;}}void deleteAtIndex(int index) {if(index > size - 1) return;else{ListNode* p = head;while(index > 0){p = p->next;index--;}ListNode* q = p->next;p->next = q->next;delete q;size--;}}
private:ListNode* head;int size;
};

反转链表

题目链接: [https://programmercarl.com/0206.翻转链表.html ]


解法

把一个元素的next指向前一个就行,但是需要记录前后的节点。

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* newhead = new ListNode();newhead->next = head;ListNode* p = newhead;ListNode* q;newhead = newhead->next;if(head == nullptr) return head;while(head->next != nullptr){q = head->next;head->next = p;p = head;head = q;}head->next = p;newhead->next = nullptr;return head;}
};

第三天打卡,目前感觉比学校的算法设计与分析课简单多了,坚持!

http://www.jsqmd.com/news/443156/

相关文章:

  • 2026年欣扬铝合金地垫靠谱吗,珠海地区口碑大调查 - 工业品牌热点
  • 2026年成都口碑好的律师推荐,沈辉律师受理案件范围及联系电话揭秘 - myqiye
  • 发际线种植新趋势,2026国内这些品牌受青睐,发际线调整/美学植发/5C美学种植/植发/微针植发,发际线种植品牌口碑推荐 - 品牌推荐师
  • 2026年好用的不锈钢酒柜专业定制公司推荐,满足你的个性化需求 - 工业推荐榜
  • 2026年佛山性价比高的地垫品牌,欣扬公司基本信息揭秘 - mypinpai
  • 盘点深圳电源管理芯片加工厂,哪家合作案例多且技术强更值得选? - 工业设备
  • 探讨搬家公司异地搬家要点,绍兴如意搬家性价比高吗? - 工业设备
  • AI基于Spec开发是巨坑?
  • 我的个人图书站重构血泪史:从Flask裸奔到Docker化部署
  • 2026年北京天津诚信的AI搜索优化品牌企业排名,哪家性价比高 - 工业推荐榜
  • TreeAge 在补充急诊干预成本核算中的应用:纳入不良反应对成本-效果影响的模型构建与分析
  • 开题卡住了?一键生成论文工具,千笔·专业论文写作工具 VS 灵感风暴AI
  • 我对着屏幕陷入沉思:我一个靠写代码吃饭的人,连自己的知识库都管不好?
  • 复现论文:基于MEAM势的Sn-Ag-Cu焊料纳米尺度热机械性能原子级分析
  • 救命神器 10个降AI率工具深度测评与推荐:本科生必看的降AIGC攻略
  • 亚马逊危险品审核不过:不是你没有SDS,是你提交方式不对
  • “童思小哲”儿童哲学科研辅助智能体开发实战:从架构设计到部署全流程
  • 带电产品出海最常见的卡点:不是运费,是资料
  • 这次终于选对!千笔AI,本科生论文写作神器
  • 外箱到底贴UN3480还是UN3481?看这3个判断
  • 全网最全 9个一键生成论文工具测评:专科生毕业论文+科研写作必备神器
  • 直接上结论:专科生必备的降AI率工具 —— 千笔·专业降AI率智能体
  • 《从千万级元数据洗练到毫秒级检索:深度拆解高性能图书信息引擎的架构演进实践》
  • 给你一张清单 8个降AI率软件降AIGC网站:MBA必看的降AI率工具测评与推荐
  • 吐血推荐 9个 AI论文网站:专科生毕业论文写作+格式规范全攻略
  • 写作压力小了,AI论文平台首选,千笔 VS 万方智搜AI
  • 2026年靠谱的电源管理芯片制造厂推荐,专业选购指南来袭 - 工业品网
  • 2026裁员潮自救指南:开发者保命的3个硬技能
  • 2026程序员梗图大赛:产品需求变更的100种死法
  • 2026年郴州叛逆管教学校排名,权威品牌大盘点 - 工业品牌热点