题解 | #删除有序链表中重复的元素-I#

删除有序链表中重复的元素-I

http://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79

/**

  • struct ListNode {
  • int val;
  • struct ListNode *next;
  • };
  • /

class Solution {
public:
/*
*
* @param head ListNode类
* @return ListNode类
*/
ListNode
deleteDuplicates(ListNode* head) {
//1. 链表为空或者结点个数为1时;直接返回结果
if(head == nullptr || head->next == nullptr) return head;
//2. 链表节点个数至少为2时,用两个指针分别指向头两个结点
ListNode * first = head;
ListNode * second = head->next;
while(second != nullptr)
{
if(first->val != second->val)
{
first = first->next; //3. 比较两指针所指结点的值
second = second->next; //若两指针所指节点不相等,将其后移
}else{ //若两指针所指节点相等,后移second直到找到第一个不等于first所指结点的结点或者空结点
while(1){ //让first->next 指向新second,若新second为空,return;若新second不为空,两指针后移
second = second->next; //重复3,直到second为空
if(second->val != first->val || second == nullptr) break;
}
first->next = second;
if(!second) return head;
else{
first = first->next;
second = second->next;
}
}
}
return head;
}
};
//并没有真正删除重复结点,只是让重复结点不在链表上。

全部评论

相关推荐

10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务