Leetcode --- 203. 移除链表元素
题目描述
给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。
示例 1:
示例
输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 输入:head = [7,7,7,7], val = 7 输出:[]
参考实现
方式1、使用递归实现
/** * 递归实现删除链表元素 * * @param head * @param val * @return */ public static ListNode removeElements(ListNode head, int val) { if (head == null) { return null; } else { head.next = removeElements(head.next, val); if (head.val == val) { return head.next; } else { return head; } } }
方式2、使用循环实现
/** * 循环删除链表元素 * * @param head * @param val * @return */ public static ListNode removeElementsxh(ListNode head, int val) { //声明虚拟节点 ListNode dummy = new ListNode(val - 1); dummy.next = head; //复制出来 ListNode prev = dummy; while (prev.next != null) { //满足删除条件进行删除 if (prev.next.val == val) { prev.next = prev.next.next; } else { //不满足进行遍历 prev = prev.next; } } return dummy.next; }