三乡网站建设,揭阳企业建站系统模板,迷情 变性 wordpress,安卓优化大师历史版本写法1、头节点 和 后面的节点 删除规则不一致 class Solution {public ListNode removeElements(ListNode head, int val) {//如果不建虚拟头节点#xff0c;那删头节点和删后面的节点#xff0c;逻辑是不一样的//头节点可能连续多个命中val,所以有while#xff0c;不是ifwh…
写法1、头节点 和 后面的节点 删除规则不一致 class Solution {public ListNode removeElements(ListNode head, int val) {//如果不建虚拟头节点那删头节点和删后面的节点逻辑是不一样的//头节点可能连续多个命中val,所以有while不是ifwhile(head!null head.val val){headhead.next;}ListNode cur head;//上面head可能全部删完了所以要判断cur不为null,我们下面需要取cur.next的val,所以还要判断cur.next不为nullwhile(cur!nullcur.next!null){if(cur.next.val val){//相等就跳过中间的一个节点cur.next cur.next.next;}else{//不相等就往后走cur cur.next;}}return head;}
}写法2、新建虚拟指针法使得删除规则可以一致 class Solution {public ListNode removeElements(ListNode head, int val) {//新建一个虚拟头节点让算法规则统一ListNode xuniHead new ListNode();xuniHead.next head;//当前节点cur必须指向虚拟头节点 而不是head因为我们算法统一后是没办法删除cur本身节点的算法只能删除cur.next及之后的也就是head及之后的ListNode cur xuniHead;while(cur.next!null){if(cur.next.val val){//相等就跳过中间的一个节点cur.next cur.next.next;}else{//不相等就往后走cur cur.next;}}return xuniHead.next;}
}