删除链表中等于给定值 val 的所有节点
示例:
输入: 1->3->5->7, val = 3
输出: 1->5->7
代码:
建立一个 Node 类,val 代表目标值,next代表链表中结点的下一个指向
class Node {
int val;
Node next; // 如果 next == null 表示是最后一个结点
Node(int val) {
this.val = val;
this.next = null;
}
public String toString() {
return String.format("Node(%d)", val);
}
}
写构造方法 Solution
定义两个引用 cur 和 prev,cur 进行遍历,cur 和 prev同时向后移动;
如果 cur.val == val ,即出现目标值,
则目标值的前驱 prev 将指向目标值所指向的对象,即删除目标值所在的结点
若出现链表第一个结点为目标值的情况,有三种解决方法
第一种:
cur 从第一个结点开始遍历,若第一个结点为目标值,则使 head 指向下一个结点对象即可
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode prev = null;
ListNode cur = head;
while (cur != null) {
if