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

解法一:只用一个节点遍历,遇到下一个相同,就将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 @   材料狗不许睡午觉  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示