剑指offer——删除链表中重复的结点

xiaoxiao2021-02-28  84

class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public class Solution { public ListNode deleteDuplication(ListNode pHead) { if(pHead == null) return null; ListNode f = pHead; ListNode pre = null; while (f != null) { ListNode next = f.next; if(next == null) return pHead; if(f.val != next.val) { pre = f; f = f.next; } else { while (true) { if(next.next == null) break; if(next.val == next.next.val) next = next.next; else break; } if(pre == null) { pHead = next.next; f = next.next; } else { pre.next = next.next; f = next.next; } } } return pHead; } public static void main(String[] args) { ListNode l1 = new ListNode(1); ListNode l2 = new ListNode(1); ListNode l3 = new ListNode(1); // ListNode l4 = new ListNode(1); // ListNode l5 = new ListNode(4); // ListNode l6 = new ListNode(4); // ListNode l7 = new ListNode(5); l1.next = l2; l2.next = l3; // l3.next = l4; // l4.next = l5; // l5.next = l6; // l6.next = l7; ListNode listNode = (new Solution()).deleteDuplication(l1); while (listNode != null) { System.out.print(listNode.val + " "); listNode = listNode.next; } } }
转载请注明原文地址: https://www.6miu.com/read-85109.html

最新回复(0)