leetcode [Remove Linked List Elements]待整理多种解法

    xiaoxiao2021-04-14  63

    /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode removeElements(ListNode head, int val) { //要删除链表的结点就需要两个个指针往下去遍历链表,prevP是为了记录当前结点的前一个结点,p是为了记录当前结点 //为了方便为原链表建一个哨位结点,这样就能表示第一个结点的前一个结点 if(head == null) return null; ListNode head1 = new ListNode(0); head1.next = head; ListNode prevP = head1; ListNode p = head; while(p != null){//循环中没有用到p.next.next,所以循环控制条件不用写while(p.next != null) if(p.val == val){//每一次都是判断当前结点 prevP.next = p.next; p = p.next; } else{//没有删除才正常移动 prevP = prevP.next; p = p.next; } } //循环中没有用到p.next.next,所以循环控制条件不用写while(p.next != null),也不用加下面这个了 /*//因为循环控制条件是while(p.next != null),所以最后还剩下一个单独的一个结点 if(p.val == val){ prevP.next = null; }*/ return head1.next; } }
    转载请注明原文地址: https://ju.6miu.com/read-670645.html

    最新回复(0)