您的位置:首页 > 其它

112删除排序链表中的重复元素

2017-07-09 14:25 351 查看

题目描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。

样例

给出 1->1->2->null,返回 1->2->null

给出 1->1->2->3->3->null,返回 1->2->3->null

思路:首先判断当前的节点的值与下一个节点的值是否相等,如果相等,则将下下一个节点赋值给下一个节点。

能够直接returnhead吗,显然也是不能的,因为head已经移动到了最后一个节点了。

所以应该在while循环之前就设置了新的head作为记录,最后返回它就好了。

/**

* Definition of ListNode

* class ListNode {

* public:

* int val;

* ListNode *next;

* ListNode(int val) {

* this->val = val;

* this->next = NULL;

* }

* }

*/

class Solution {

public:

/**

* @param head: The first node of linked list.

* @return: head node

*/

ListNode *deleteDuplicates(ListNode *head) {

if(head==NULL)

{

return 0;

}

if(head->next==NULL)

{

return head;

}

ListNode*p=head;

while(head->next!=NULL)

{

if(head->val==head->next->val)

{

head->next=head->next->next;

}

else

{

head=head->next;

}

}

return p;
// write your code here
}


};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表