题解 | #删除有序链表中重复的元素-I#
删除有序链表中重复的元素-I
http://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79
注意事项
这道题其实很简单,但是需要注意一下链表保存的节点,head节点是否是保存数据的节点,比如牛客中就是,也有一些head节点仅仅是指针。这里思路就是遍历链表,找到重复数字就把该节点删除就行了
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* deleteDuplicates(ListNode* head) {
// write code here
//判断重复->删除重复元素
if(head==NULL || head->next == NULL)
return head;
if(head->next->next == NULL)
{
if(head->val==head->next->val)
{
head->next = NULL;
return head;
}
}
ListNode* xxx = head->next;
ListNode* bef= head;
while(xxx!=NULL)
{
ListNode* cur = xxx->next; //保存下一个节点数据
if(bef->val == xxx->val)
{
xxx->next = NULL; //将当前xxx节点释放
bef->next = cur;
xxx = cur;
}
else
{
bef = xxx;
xxx = xxx->next;
}
}
return head;
}
};