力扣--链表(力扣)

力扣--链表(力扣)_第1张图片

力扣--链表(力扣)_第2张图片

力扣--链表(力扣)_第3张图片
力扣--链表(力扣)_第4张图片

package LinkedList;

public class LeetCode_203 {
    //N是nums数组的大小
    //时间复杂度:O(N)
    //空间复杂度:O(1)

    /**  移除链表元素  head = [1,2,6,3,4,5,6]   head是链表的头节点 (head指第1个元素所在的位置)    val = 6    输出:[1,2,3,4,5]  */
    public ListNode removeElements(ListNode head, int val) {
        ListNode dummyHead = new ListNode(0);
        dummyHead.next = head;      //dummyHead临时头结点
        ListNode prev = dummyHead;  //引入prev指针,每次在head移动之前,先把head值赋值给prev,再head=head.next
                                    //prev节点放到dummyHead节点上,因为一开始head的前一个就是dummyHead节点
        while (head != null) {
            if (head.val == val) {
                prev.next = head.next;
            } else {
                prev = head;
            }
            head = head.next;
        }
        return dummyHead.next;  // 输出:[1,2,3,4,5]
    }


      //单链表的定义
      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; }
      }

}


你可能感兴趣的:(学习笔记,算法)