删除有序链表中重复的节点

解法一:只用一个节点遍历,遇到下一个相同,就将cur.next = cur.next.next; 否则正常遍历

fun(head){

  if(head == null) return null;

  Node cur = head;//遍历的指针

  while(cur != null && cur.next != null){

    if(cur.val = cur.next.val){

      cur.next = cur.next.next;

    }else {cur = cur.next;}

  }

}

解法二:使用两个节点,前一个节点pre ,后一个节点cur, cur与pre的值不同就把cur节点向后移动,不同就把pre.next = cur; pre = cur;此时有个问题是最后一个节点会不进行比较

fun(head){

  if(head == null) return null;

  Node cur = head;//遍历的指针

  Node pre = head;

  while(cur != null && cur.next != null){

    if(pre.val == cur.val){

      cur = cur.next;

    }else{

      pre.next = cur;

      pre = cur;

    }

  }

  if(pre.val == cur.val){

    pre.next = null;

  }else{pre.next = cur;}

  return head;

}

posted @ 2023-03-30 14:32  材料狗不许睡午觉  阅读(47)  评论(0)    收藏  举报