🎯 请点击上方原题链接,查看题目描述👆
💭 解题思路#
递归#
方法的作用是移除 Node.val == val
的节点,我们先移除 head.next
中的元素,最后判断头节点是否等于 val,如果等于就返回 head.next
,不等于就直接返回head
💻 代码实现
class Solution { public ListNode removeElements(ListNode head, int val) { //base case if(head == null)return head;
head.next = removeElements(head.next,val); return head.val == val ? head.next : head; }}
迭代#
- 定义一个节点,将节点指向 head
- 定义一个临时的节点 temp,进行遍历。核心就是当
head.next.val == val
的时候。head.next = head.next.next
💻 代码实现
class Solution { public ListNode removeElements(ListNode head, int val) {
//定义一个指向head的节点 ListNode res = new ListNode(-1); res.next = head;
ListNode temp = res; while(temp.next != null){ if(temp.next.val == val){ temp.next = temp.next.next; }else{ temp = temp.next; } } return res.next; }}