题解 | #删除有序链表中重复的元素-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;
}
};
//并没有真正删除重复结点,只是让重复结点不在链表上。

全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
2025-12-23 17:44
山西大学 测试工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务