爱站网反链分析,仓库管理erp自学视频,网站建设佛,济宁北湖建设集团网站一、题目 给你一个链表的头节点 head 和一个整数 val #xff0c;请你删除链表中所有满足 Node.val val 的节点#xff0c;并返回 新的头节点 。 示例 1#xff1a; 输入#xff1a;head [1,2,6,3,4,5,6], val 6
输出#xff1a;[1,2,3,4,5]示例 2#xff1a;
输入请你删除链表中所有满足 Node.val val 的节点并返回 新的头节点 。 示例 1 输入head [1,2,6,3,4,5,6], val 6
输出[1,2,3,4,5]示例 2
输入head [], val 1
输出[]示例 3
输入head [7,7,7,7], val 7
输出[] 二、思路解析 在最开始我们先规避掉两种情况一是头结点为空而是头结点刚好为要移除的元素。
这两种情况我们直接把头结点 head 赋值为 head.next 即可也就是把绕过这个节点的意思。
然后要是 head 这个头结点为空我们也直接返回掉就行。 剩下的都是不用提前返回的情况了我们一步步来看
跟上一题的 while 循环很相似我们先定义一个 cur 变量其值为 head 用于遍历该链表。
只要 cur.next 不为空就说明我们还没走到底这个链表可以继续遍历所以我们把这个条件放到 while 循环的判断条件中。
接着只要找出 cur.next.val val 这种 “下一个元素等于要移除元素” 的情况让他的 next 域赋值为他的 next.next 即可也就是把这个节点接到他的下下个节点从而达成了 “移除” 效果。
最后我们再返回头结点 head 即可。 三、完整代码 /*** 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) {while(head!null head.val val){head head.next;}if(headnull){return head;}ListNode cur head;while(cur.next!null){if(cur.next.valval){cur.next cur.next.next;}else{cur cur.next;}}return head;}
} 以上就是本篇博客的全部内容啦如有不足之处还请各位指出期待能和各位一起进步