代码随想录二刷Day02链表:203.移除链表元素,707.设计链表,206.反转链表
创始人
2024-05-26 01:52:42
0

203.移除链表元素(写if的时候,要考虑要不要写else语句)

文章链接:代码随想录 (programmercarl.com)

思路:

(1)要操作链表的话,可以设置一个虚拟头节点,从而方便操作

(2)根据题目的要求,如果当前节点的val值是要删除的,那么就让当前节点的前一个节点指向当前节点的后一个节点

(3)使用单指针,遍历链表,找寻cur.next节点的值是否是要删除的节点

实现代码遇到的问题:

(1)循环体里应该是if + else 语句,举例子,如果为[7,7,7,7],循环体里是if语句的话就说出现跳过节点的情况

Java代码:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeElements(ListNode head, int val) {//判断特殊情况if(head == null){return head;}//设置一个虚拟头节点ListNode dummynode = new ListNode(-1);dummynode.next = head;//cur指针ListNode cur = dummynode;//让指针开始遍历链表while(cur != null && cur.next != null){if(cur.next.val == val){cur.next = cur.next.next;}else{cur = cur.next;}}return dummynode.next;}
}

707.设计链表

文章链接:代码随想录 (programmercarl.com)

思路:需要设置虚拟头节点,需要设置链表长度,需要自己定义节点函数

Java代码:

//首先需要自己定义一个节点函数
class ListNode{int val;ListNode next;public ListNode(){}public ListNode(int val){this.val = val;}
}class MyLinkedList {//记录链表节点个数(即链表的长度)int size;//设置一个虚拟头节点,因为有可能删除的节点是头节点ListNode dummynode = new ListNode();public MyLinkedList() {//初始化size = 0;}public int get(int index) {if(index < 0 || index >= size){return -1;}ListNode cur = dummynode;for(int i = 0; i <= index;i++){cur = cur.next;}return cur.val;}public void addAtHead(int val) {addAtIndex(-1,val);}public void addAtTail(int val) {addAtIndex(size,val);}public void addAtIndex(int index, int val) {//如果index大于链表长度,直接returnif(index > size){return;}else{ListNode node = new ListNode(val);ListNode cur = dummynode;//让cur指向index的前一个节点for(int i = 0; i < index && cur != null;i++){cur = cur.next;}ListNode temp = cur.next;cur.next = node;node.next = temp;//长度加1size++;}}public void deleteAtIndex(int index) {//先判断特殊情况if(index < 0 || index >= size){return;}ListNode cur = dummynode;//找到要删除的节点前一个节点for(int i = 0; i < index && cur != null;i++){cur = cur.next;}//保存要删除节点的下一个节点ListNode temp = cur.next.next;cur.next = temp;//链表长度减一size--;}
}/*** 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.反转链表

文章链接:代码随想录 (programmercarl.com)

思路:双指针思路

实现代码遇到的问题:

(1)pre指针一开始应该指向的是null

(2)循环条件写错,应该写成cur != null 就行,不需要添加cur.next != null,以后遇到这种情况一定要举例子看条件是否成立

Java代码:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode reverseList(ListNode head) {//先判断特殊情况if(head == null){return head;}//指针1ListNode pre = null;//指针2ListNode cur = head;while(cur != null){//首先存储节点ListNode temp = cur.next;cur.next = pre;pre = cur;cur = temp;}return pre;}
}

相关内容

热门资讯

女人是怎样上厕所的 女人是怎样上厕所的 ,,,当然是蹲着了,不管大小都要带纸,明白了么,呵
简述游戏对儿童认知发展的作用是... 简述游戏对儿童认知发展的作用是什么?简述游戏对儿童认知发展的作用是什么? 游戏能有效地促进幼儿认知、...
离别的诗小学 离别的诗小学1、直道相思了无益,未妨惆怅是清狂。2、执手相看泪眼,竟无语凝噎。3、曾经沧海难为水,除...
《女神异闻录5》结局是什么? 《女神异闻录5》结局是什么? 《女神异闻录5》结局是永不落幕。莲被报道作为怪盗团事件的嫌疑犯而自杀的...
为什么会有戚顾同人的? 为什么会有戚顾同人的?为什么会有戚顾同人的??逆水寒为什么会有戚顾王道??是不是本身剧情就存在暧昧?...
关于篮球的词语 关于篮球的词语篮板、得分 、断球、发球形容篮球的词语比较常见的有雷霆万钧 千钧一发 球迷: 万众一心...
迈康立接骨木莓的食用方法? 迈康立接骨木莓的食用方法?食用方法可自主选择。关键是注意温度不要过高,这样容易破坏营养成分活性。以下...
求音乐:如果奥特曼打不赢小怪兽 求音乐:如果奥特曼打不赢小怪兽歌名应为 万一奥特曼打不赢小怪兽 歌手:小贱 专辑:我是小贱
数学动物园主要内容 数学动物园主要内容18算数有关的故事,里面的人物有小熊、小猴、老山羊、狐狸、黄鼠狼、虎大王、蛇和小灰...
请问有否可能超越光速?如果超越... 请问有否可能超越光速?如果超越了光速会后破坏物理规则。理论上可以 但是现在做不到 不会破坏物理...
心里总是很压抑,好想发泄一下,... 心里总是很压抑,好想发泄一下,但不知道该怎么去发泄,有没有好的建议啊?跳水,蹦机做一些挑战自己的运动
有关纪晓岚的长而幽默故事 有关纪晓岚的长而幽默故事拥抱 著名法国幽默作家特里斯坦·贝尔纳有一天去一家饭馆吃饭,对那里的服务态度...
道教的天仙和地仙,究竟有什么分... 道教的天仙和地仙,究竟有什么分别?道教的天仙和地仙,主要是办公的地方不一样,一个在天上,一个在地上道...
在你眼中感情的深浅和认识的时间... 在你眼中感情的深浅和认识的时间长短有关系吗?很有关系,所谓的路遥知马力,日久见人心,认识时间短,对对...
让孩子学习钢琴是为了让孩子学成... 让孩子学习钢琴是为了让孩子学成钢琴家吗小孩子对形状各异、能发出不同音色的乐器远不就充满了好奇心的,乐...
惊恐发作的我...好害怕 惊恐发作的我...好害怕心理分析:您好,癫痫(epilepsy)即俗称的“羊角风”或“羊癫风”,是大...
什么是经络按摩 什么是经络按摩你好,经络按摩就是从中医的经络走行,来针对治疗疾病而进行按摩达到治疗或辅助的功能。
求本伪兄妹小说,女主其实是男主... 求本伪兄妹小说,女主其实是男主的妈妈,男主和他的好朋友都爱上了女求本伪兄妹小说,女主其实是男主的妈妈...
舞动精灵乐团中好听的歌曲有那些... 舞动精灵乐团中好听的歌曲有那些?SHEGOD IS GIRLFar away from my hom...
《盗梦空间》里面柯布是如何迷失... 《盗梦空间》里面柯布是如何迷失在最后一层梦境的?这个是斋藤建造的梦,所以自然情况比较危险,没有办法很...