import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param val int整型 * @return ListNode类 */ public ListNode removeElements (ListNode head, int val) { // write code here ListNode dummyListNode=new ListNode(0); dummyListNode.next=head; ListNode currentListNode=dummyListNode; while(currentListNode.next!=null) { if(currentListNode.next.val==val) { currentListNode.next=currentListNode.next.next; }else { currentListNode=currentListNode.next; } } return dummyListNode.next; } }
创建一个虚拟头结点,以此来规避head本身的值与val相等的情况,创建一个current指针,指向当前的结点,如果current.next的值与val相等,那么就让current.next=current.next.next;如果不相等,就正常移动指针,让current=current.next,最后返回dummy.next,表示新的头结点