DAY3 - 203.移除链表元素, 707.设计链表, 206.反转链表

news/2025/3/16 21:57:57/文章来源:https://www.cnblogs.com/chloechen/p/18775791

203.移除链表元素

开始觉得很简单,自信满满写了答案

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}    // 无初始值*     ListNode(int x) : val(x), next(nullptr) {}   // val *     ListNode(int x, ListNode *next) : val(x), next(next) {}  // next* };*/
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {ListNode* newhead=new ListNode(0);newhead->next=head;for(ListNode* p=newhead; p->next!=NULL; p=p->next){if(p->next->val==val){ListNode* temp=p->next;p->next=temp->next;delete temp;}}return newhead->next;}
};

但是访问越界了,修改了for循环条件: p!=NULL&&p->next!=NULL 结果还是不对。

其实是思路就错了。在删除元素之后 p 不应该直接移向 p->next,而是应该再次判断,所以应该用while来写循环,修改后如下:

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

707.设计链表

class MyLinkedList {
private:struct Node {int val;Node *next;Node(int val) : val(val), next(nullptr) {}};Node *fhead;  // 链表的虚拟头节点int _len;     // 链表长度public:MyLinkedList() {fhead=new Node(0);// Node *tail=fhead->next;_len=0;}int get(int index) {if(index>=_len)return -1;Node *ptr=fhead;for (int i=-1; i<index; i++){ptr=ptr->next;}return ptr->val;}void addAtHead(int val) {Node *newnode=new Node(val);newnode->next=fhead->next;fhead->next=newnode;_len++;}void addAtTail(int val) {Node *newnode=new Node(val);Node *ptr=fhead;while(ptr->next!=NULL){ptr=ptr->next;}ptr->next=newnode;_len++;}void addAtIndex(int index, int val) {if(index==_len){this->addAtTail(val);}else if(index<_len){Node *newnode=new Node(val);Node *ptr=fhead;for (int i=-1; i<index-1; i++){ptr=ptr->next;}newnode->next=ptr->next;ptr->next=newnode;_len++;}}void deleteAtIndex(int index) {if(index>=_len)return;Node *ptr=fhead;for (int i=-1; i<index-1; i++){ptr=ptr->next;}Node *temp=ptr->next;ptr->next=ptr->next->next;delete temp;temp=NULL;_len--;}};/*** Your MyLinkedList object will be instantiated and called as such:* MyLinkedList* obj = new MyLinkedList();* int param_1 = obj->get(index);* obj->addAtHead(val);* obj->addAtTail(val);* obj->addAtIndex(index,val);* obj->deleteAtIndex(index);*/

206.反转链表

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode*p = head;ListNode*q=NULL;while(p){ListNode*temp=p->next;p->next=q;q=p;p=temp;}return q;}
};

关于条件到底是 p!=NULL (p) 还是 p->next!=NULL 不能想当然,而是要模拟下边界情况(走到最后一个)时候p,q分别是什么才能写边界条件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/900008.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20242313 2024-2025-2 《Python程序设计》实验一报告

20242313 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级:2423 姓名:曾海鹏 学号:20242313 实验教师:王志强 实验日期:2025年3月16日 必修/选修:公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并…

nn.Embedding()函数详解

nn.Embedding()函数详解 nn.Embedding()函数:随机初始化词向量,词向量在正态分布N(0,1)中随机取值 输入: torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, _weight=None) num…

htb Authority

端口扫描 nmap -sC -sV -p- -Pn -T4 10.10.11.222 Starting Nmap 7.92 ( https://nmap.org ) at 2024-10-04 19:42 CST Nmap scan report for 10.10.11.222 (10.10.11.222) Host is up (0.40s latency). Not shown: 65506 closed tcp ports (reset) PORT STATE SERVICE …

蓝桥杯14届省B

蓝桥杯14届省赛B组A:int a[105]; int day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};//记录每个月有多少天 set<int> st;//记录不重复的日期void check(int mm,int dd){if (mm>12||mm<1||dd<1||dd>day[mm]) return;else st.insert(mm*100+dd);//st存日期 …

docker 安装 oracle database 问题记录

pre本地docker (WSL)安装运行 Oracle1. 镜像处理参考链接:https://www.cnblogs.com/wuchangsoft/p/18344847 oracle 镜像获取:https://container-registry.oracle.com/ords/f?p=113:10:::::: (Oracle官网,由于部分问题导致直接pull无法拉取) 阿里云,参考链接里有个个人19…

20242103 实验一《Python程序设计》实验报告

20242103 《Python程序设计》实验1报告 课程:《Python程序设计》 班级: 2421 姓名: 李雨虓 学号:20242103 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容: 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试…

20241313 2024-2025-2 《Python程序设计》实验一报告

20241313 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2413 姓名: 刘鸣宇 学号:20241313 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序…

mutatingwebhook的简单实例

一. k8s集群准备 这里不再赘述k8s集群搭建。主要注意参数:kubectl get po kube-apiserver-server -n kube-system -o yaml | grep plugin 预期结果为:- --enable-admission-plugins=NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook 至少要拥有两个参数…

Tauri新手向 - 基于LSB隐写的shellcode加载器

此篇是记录自己初次学习tauri开发工具,包含遇到的一些问题以及基本的知识,也给想上手rust tauri的师傅们一些小小的参考。此项目为保持免杀性暂不开源,希望各位师傅多多支持,反响可以的话后续会放出代码大家一起交流学习。ShadowMeld - 基于图像隐写技术的载荷生成框架 通过…

P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G(缩点)

P2341 [USACO03FALL / HAOI2006] 受欢迎的牛 G 题目背景 本题测试数据已修复。 题目描述 每头奶牛都梦想成为牛棚里的明星。被所有奶牛喜欢的奶牛就是一头明星奶牛。所有奶牛都是自恋狂,每头奶牛总是喜欢自己的。奶牛之间的“喜欢”是可以传递的——如果 \(A\) 喜欢 \(B\),\(…