【Java】LeetCode题答-203移除链表元素 2021-06-26 | 算法与数据结构 | 0 | 20 | 283 LeetCood题目题答1(完整代码)123456789101112131415161718192021222324252627282930313233343536 复制/** * 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){ ListNode delNode = head; head = head.next; delNode.next = null; } if(head == null) return head; ListNode prev = head; while(prev.next != null) { if(prev.next.val == val) { ListNode delNode = prev.next; prev.next = delNode.next; delNode.next = null; } else prev = prev.next; } return head; }} 题答2(利用虚拟头)123456789101112131415161718192021222324252627282930313233 复制/** * 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 Solution2 { public ListNode removeElements(ListNode head, int val) { ListNode dummyHead = new ListNode(-1); dummyHead.next = head; if(head == null) return head; ListNode prev = dummyHead; while(prev.next != null) { if(prev.next.val == val) { ListNode delNode = prev.next; prev.next = delNode.next; delNode.next = null; } else prev = prev.next; } return dummyHead.next; } 题解3(利用链表递归)和原理图 12345678910 复制class Solution3 { public ListNode removeElements(ListNode head, int val) { if(head == null) //最小规模情况结束条件 return head; head.next = removeElements(head.next, val); return head.val == val ? head.next : head; } 本地测试截图 本文标题:【Java】LeetCode题答-203移除链表元素 文章作者:孤桜懶契 发布时间:2021年06月26日 - 19:06:45 最后更新:2022年05月20日 - 11:47:45 原始链接:https://gylq.gitee.io/posts/41.html 许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。 -------------------本文结束 感谢您的阅读------------------- 坚持原创技术分享,感谢您的支持和鼓励! 打赏 微信支付 支付宝
v1.4.16