啊啊链表的题真的写时一时爽,调试火葬场,这个博客做了好久,磨磨蹭蹭拖了两天哎。
1.删除链表中的重复元素
leetcode82:Remove Duplicates fromSorted List II
题目在这里:
解题思路:
我一开始思路错了后面看了bobo老师的代码才明白怎么做。这里要找到重复的一段链表段,把整段链表段删除。这种题不太熟练,接下来还需要继续练。
代码:(因为要调试加上了main函数和create,print函数)
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode createList(int[] array)
{
ListNode head=new ListNode(0);
ListNode tail=head;
for(int i=0;i<array.length;i++)
{
ListNode node=new ListNode(array[i]);
tail.next=node;
tail=node;
}
tail.next=null;
return head.next;
}
public void print(ListNode head) {
ListNode node=head;
while (node != null) {
System.out.print(node.val);
node=node.next;
}
}
public ListNode deleteDuplicates(ListNode pHead) {
ListNode dummyhead=new ListNode(0);
dummyhead.next=pHead;
ListNode pre=dummyhead;
ListNode cur=pre.next;
while(cur!=null)
{
int sum=0;
ListNode p=cur;
while(p!=null&&p.val==cur.val)
{
sum++;
p=p.next;
}
if(sum>1)
{
pre.next=p;
}else{
pre=cur;