牛客网高频算法题系列-BM15-删除有序链表中的重复元素-IDelete给定的重复元素链表(链表中的元素按照从小到大的顺序排列),使得链表中的所有元素只出现一次。原标题:BM15删除有序链表中的重复元素-I方案一:链表遍历首先考虑特殊情况如果链表为空或者只有一个节点,则不会有重复元素,而原链表将被退回。否则遍历链表节点,判断是否有重复元素。处理过程如下:使用pre记录最后一个未重复节点,并初始化为链表头;然后从链表的第二个节点next开始遍历链表节点;如果next和pre的值相同,则删除当前重复节点;如果next和pre的值不一样,更新pre的值。遍历完成后,链表的头节点没有改变,只是返回头节点。codepublicclassBm015{/***删除有序链表中的重复元素-I**@paramheadListNodeclass*@returnListNodeclass*/publicstaticListNodedeleteDuplicates(ListNodehead){//如果链表为空或者只有A节点,不会有重复元素,返回原链表if(head==null||head.next==null){returnhead;}//pre记录最后一个不重复的节点//next是从第二个节点开始判断是否有重复元素ListNodepre=head,next=head.next;//遍历链表while(next!=null){//如果当前节点的值与pre的值相同,则删除删除当前节点,修改pre的next指针if(pre.val==next.val){pre.next=next.next;}else{//如果当前节点不重复,则更新prepre=next;}next=next.next;返回头;}publicstaticvoidmain(String[]args){ListNodehead=ListNode.testCase6();System.out.println("原链表为");ListNode.print(头);System.out.println("删除有序链表中重复元素后的链表为");ListNode.print(deleteDuplicates(head));}}$1.01^{365}≈37.7834343329$$0.99^{365}≈0.02551796445$相信坚持的力量!
