[LeetCode]Remove Duplicates from Sorted List II Java

来源:互联网 发布:xampp linux 编辑:程序博客网 时间:2024/06/01 17:09

简单说一下自己的思路:

首先要确定一个头,第一个不是重复数字的头,第一个循环确定本身不是空置且有下一个节点,取头节点值,和后面的对比,如果相同就继续找不同的。头结点和下一个节点相同则可以确定头节点。

然后就是去除链表上的重复节点,cur指向的是肯定不是重复结点,首先指向头,然后指向头下两个不同节点中的第一个,然后依次向下找。

感觉还是比较清晰的,就是代码行数太多了。优点是用的常数空间

public class RemoveDuplicatesfromSortedListII{public static ListNode deleteDuplicates(ListNode head) {if (head == null || head.next == null) {return head;}while (head != null && head.next != null) {int first = head.val;if (head.next.val != head.val) {break;}while (head != null && head.val == first) {head = head.next;}}if (head == null) {return head;}ListNode cur = head;while (cur != null && cur.next != null) {if (cur.next != null && cur.next.next == null) {break;}if (cur.next.val == cur.next.next.val) {int temp  = cur.next.val;while (cur.next != null && cur.next.val == temp) {cur.next = cur.next.next;}continue;}cur = cur.next;}return head;}}


0 0
原创粉丝点击