好贷网好贷款

Remove Duplicates from Sorted List II

发布时间:2016-12-5 4:28:35 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Remove Duplicates from Sorted List II",主要涉及到Remove Duplicates from Sorted List II方面的内容,对于Remove Duplicates from Sorted List II感兴趣的同学可以参考一下。

题目原型: Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example, Given 1->2->3->3->4->4->5, return 1->2->5. Given 1->1->1->2->3, return 2->3. 基本思路: 这个题目较上一个题的不同之处在于,本题中要删除重复元素,采用的思路是先找到head指针,就是头指针,例如:1->1->1->2->3 头指针就是指向2的指针,1->2->3->3->4->4->5头指针就是指向1的指针,以此类推,然后从 头指针开始扫描,类似上一题。 public ListNode deleteDuplicates(ListNode head) { if(head==null) return null; ListNode p = head,pre; ListNode nextNode = p.next; boolean hasFound = false; int temp = 0; int flag = 0; if(nextNode==null) return head; while(nextNode!=null) { if(p.val!=nextNode.val&&flag==0) { head = p; hasFound = true; break; } else if(p.val!=nextNode.val&&flag==1) flag = 0; else if(p.val==nextNode.val) flag = 1; p = nextNode; nextNode = p.next; } if(hasFound==false) { if(p!=null&&flag==0) head = p; else return null; } p = head.next; pre = head; if(p!=null) temp = pre.val; while(p!=null) { if(temp!=p.val) { if(p.next!=null&&p.next.val!=p.val) { pre.next = p; pre = p; } if(p.next==null) pre.next = p; temp = p.val; flag = 0; } else { flag = 1; } p = p.next; } if(flag==1) pre.next = null; return head; }

上一篇:C# 设置webbrowser 引用的IE版本
下一篇:《高效学习OpenGL》 之 多边形偏移 glPolygonOffset(),glPolygonMode()

相关文章

相关评论