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

全部评论

相关推荐

溱元:大四没有实习真的很难了 而且已经是大四下学期了,入行晚了 看样子是刚学完三大件+框架吧 简历真的需要再花时间好好打磨 但是马上又快毕业了 很多公司都要求实习6个月以上 感觉最大的问题就是你没有时间了 虽然可能有点扎心 但就像黑马pink老师说的那样 大四就不要再走it方向了 时间来不及了
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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