16.哀家要长脑子了!

2024-04-23 05:44
文章标签 16 要长 脑子 哀家

本文主要是介绍16.哀家要长脑子了!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1. 707. 设计链表 - 力扣(LeetCode)

2.203. 移除链表元素 - 力扣(LeetCode)

3.206. 反转链表 - 力扣(LeetCode)

4.237. 删除链表中的节点 - 力扣(LeetCode)

5. 19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)


1. 707. 设计链表 - 力扣(LeetCode)

这我都懂,但是,一让我动手写代码我就不会了TAT TAT TAT TAT TAT TAT

class MyLinkedList {int size;          //链表长度ListNode *head;    //头结点
public:MyLinkedList() {this->size = 0;                  //初始化链表无元素,长度为0this->head = new ListNode(0);    //头结点为空}int get(int index) {if(index < 0 || index >= size){    //访问位置不合理return -1;}ListNode *p = head;for(int i = 0; i <= index; i++){    p = p->next;}return p->val;}void addAtHead(int val) {addAtIndex(0,val);}void addAtTail(int val) {addAtIndex(size,val);}void addAtIndex(int index, int val) {if(index > size){    //插入位置大于链表长度,不合法return;}index = max(0,index);    size++;               // 插入元素,长度增加ListNode *p = head;for(int i = 0; i <index; i++){p = p->next;}ListNode *e = new ListNode(val);e->next = p->next;    //先为前驱p->next = e;          //再后继}void deleteAtIndex(int index) {if(index < 0 || index >= size){return ;}size--;    //删除元素 长度减小ListNode *pre = head;for(int i = 0; i <index; i++){pre = pre->next;    //定位到要删除元素的前一个元素}    ListNode *p = pre->next;pre->next = pre->next->next;    delete p;}
};/*** 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);*/
2.203. 移除链表元素 - 力扣(LeetCode)

用一个空结点当头结点呀~~ 这样子如果需要删除的是头结点的话,就不需要进行额外操作了。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {ListNode *first = new ListNode(0);    //是要生成新结点不是生成指针first->next = head;ListNode *p = first;   //工作指针p从头结点开始遍历while(p->next){if(p->next->val == val){    //p判断下一个位置的值p->next = p->next->next;}else{p=p->next;}}head = first->next;    delete first;return head;}
};
3.206. 反转链表 - 力扣(LeetCode)


晕头转向晕头转向



按顺序来是:蓝色、红色、粉色

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode *prev = nullptr;ListNode *cur = head;    //用来指向当前反转方向的元素ListNode *next;          //用来指向下一个需要操作的元素while(cur){              //当前元素不为空,就需要反转  next = cur->next;    //先记录下一个需要反转的元素cur->next = prev;    //反转方向啦!不是指向后一个而是前一个prev = cur;      //因为要继续遍历 那么现在的元素对于下一个来说就是前驱元素cur = next;      //下一个元素来了  }return prev;}
};
4.237. 删除链表中的节点 - 力扣(LeetCode)


嗯。。。。看不太懂题,后面看题解发现,题目中给出这个哪个结点就删除哪个结点,不会给出整个链表,那你直接对这个结点操作就好。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:void deleteNode(ListNode* node) {node->val = node->next->val;    //记得要把值也给更改了node->next = node->next->next;}
};
5. 19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)

下次想到办法就先自己动手试试,不管会不会,先试试,再去看题解,像这个你自己的思路就是对的,要自信呀

单链表要删除结点,但是又不知道是正数第几个,没办法咯,只能先求出链表长度。

然后倒数第n个结点就是正数第length-n+1个结点。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode *p = head;int length = 0;while(p){++length;p = p->next;} ListNode *dummy = new ListNode(0, head);p = dummy;int m = length - n + 1;for(int i = 0; i < m-1; i++){p = p->next;}p->next = p->next->next;ListNode *ans = dummy->next;delete dummy;return ans;}
};

对于所要删除的结点的前驱结点的定位

for(int i = 1; i < m; i++) 或 for(int i = 0; i < m-1; i++)

加油! 

这篇关于16.哀家要长脑子了!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/927932

相关文章

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

16 子组件和父组件之间传值

划重点 子组件 / 父组件 定义组件中:props 的使用组件中:data 的使用(有 return 返回值) ; 区别:Vue中的data (没有返回值);组件方法中 emit 的使用:emit:英文原意是:触发、发射 的意思components :直接在Vue的方法中声明和绑定要使用的组件 小炒肉:温馨可口 <!DOCTYPE html><html lang="en"><head><

react笔记 8-16 JSX语法 定义数据 数据绑定

1、jsx语法 和vue一样  只能有一个根标签 一行代码写法 return <div>hello world</div> 多行代码返回必须加括号 return (<div><div>hello world</div><div>aaaaaaa</div></div>) 2、定义数据 数据绑定 constructor(){super()this.state={na

打靶记录16——Momentum

靶机: https://download.vulnhub.com/momentum/Momentum.ova 下载后使用 VirtualBox 打开 难度:中 目标:取得 root 权限 + 2 Flag 攻击方法: 主机发现端口扫描信息收集Web 路径爆破XSS 漏洞JS 脚本分析AES 解密Redis 认证漏洞 主机发现 sudo arp-scan -l 端口扫描和服务发

NYOJ 16 矩形嵌套

OJ题目 : http://acm.nyist.net/JudgeOnline/problem.php?pid=16 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除

【硬刚ES】ES高级(16) 使用基础(4)安装(4) Linux 单机

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。 1 软件下载 软件下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-0 2 软件安装 1) 解压软件 将下载的软件解压缩 # 解压缩tar -zxvf elasticsearch-7.8

redis 实现单位时间内错误记录 时间到key值就被清除------最近脑子不好使觉得还是写个博客试试

直接在客户端操作的, 所以需要redis的简单命令  去对比JAVA客户端jedis的命令就行   添加---set     格式 set  key  value  EX time(秒)   如果这个time不添加的话 ,那默认就是 永久 获取--get    格式 get key  ---查看剩余时间    格式 TTL key ---实现key实现自增: inrc key

LeetCode 16 3Sum Closest

题意: 给出数组s和目标target,要求从中选出3个数字,使其相加的和最接近target。 思路: x sum系列的题目,在这里做一个总结。 最经典的情况为2 sum问题,即给出s和target找出s[i] + s[j] = target。 可以使用枚举s[i]判断target - s[i]是否在s中出现且与s[i]不同的O(nlogn)方法,用map或排序后二分查找的方式均可。

iPhone 16或将不支持微信?谣言还是事实?

iPhone 16或将不支持微信?谣言还是事实? 近日,一则关于“iPhone 16可能不支持微信” 的传言如同一颗重磅炸弹,引爆了社交媒体,特别是在微博上,相关话题迅速占据热搜榜单,引发了无数网友的热议和担忧。然而,事实究竟如何?这背后又隐藏着哪些不为人知的博弈?今天,猫头虎技术团队就带大家一探究竟。 猫头虎是谁? 大家好,我是 猫头虎,别名猫头虎博主,擅长的技术领域包括云原生、前端、

萌新6:16进制世界(dp)

题目描述 这是一个16进制的世界,比如522的16进制是20A。 在5月22日那天,有人送给Bob一些月饼,每个月饼有饱食度和幸福度两个属性。 现在Bob有nnn个月饼,对于每个月饼iii,饱食度为viv_ivi​,幸福度为wiw_iwi​。 Bob现在有mmm饱食度,意味着他吃的月饼的饱食度之和不大于mmm。 但是由于Bob身处16进制的世界,他吃的月饼的幸福度之和必须是16的倍数。