当前位置: 首页 > 后端技术 > Java

LeetCode-082-删除排序链表中的重复元素Ⅱ

时间:2023-04-01 21:09:33 Java

删除排序链表中的重复元素Ⅱ题目描述:有一个升序排列的链表,给你这个链表的头节点head。Pleasedeleteallexistingelementsinthelinkedlist对于有重复编号的节点,只保留原链表中没有重复出现的编号。返回也按升序排序的结果链接列表。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:链表遍历首先声明一个新的链表头节点newHead,last指向新的头节点newHead,cur指向旧的头节点head,然后遍历链表head。遍历过程如下:声明一个布尔变量isRepeated,用于标识当前节点是否为重复节点;声明next为cur的下一个节点,通过循环过程找到与cur节点不同编号的下一个节点,判断当前节点是否重复,updateisRepeated;如果isRepeated为true,则表示当前如果节点重复,则跳过重复的节点,再处理下一个节点;如果isRepeated为false,表示后面的节点与当前节点不相同,将当前节点添加到last的下一个节点,再处理下一个节点。最后返回newHead的下一个节点作为结果。publicclassLeetCode_082{publicstaticListNodedeleteDuplicates(ListNodehead){if(head==null||head.next==null){returnhead;}ListNodenewHead=newListNode(-1);ListNodelast=newHead,cur=head;while(cur!=null){//当前节点是否为重复标志booleanisRepeated=false;ListNodenext=cur.next;//查找下一个与cur节点编号不同的节点,判断当前节点是否重复while(next!=null&&next.val==cur.val){isRepeated=true;下一个=下一个。下一个;}if(isRepeated){//如果当前节点重复,则跳过本次重复Nodecur=next;}else{//如果当前节点不是重复节点,它将是最后一个节点的下一个节点last.next=newListNode(cur.val);最后一个=最后一个。下一个;当前=下一个;}}返回newHead.next;}publicstaticvoidmain(String[]args){李stNodehead=newListNode(1);head.next=newListNode(2);head.next.next=newListNode(2);ListNoderesult=deleteDuplicates(head);while(result!=null){System.out.print(result.val+"");结果=结果.下一个;}}}【每日留言】你等,清风自来。等待可能是一阵风。你等待的可能是一个机会。孤独,但终究要等,不等,风就不会来。