Remove Duplicates from Sorted List

浪尽此生 提交于 2020-01-26 02:34:44

删除一个有序单链表的重复节点

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

思路:两个指针,一前一后,前面指针的值与后面指针的值相等就往前,直到不同,后指针的下一个节点指向前指针,然后继续。
注意一下边界:

  • 头指针为空
  • 链表只有一个节点
  • 尾部需要处理

    class Solution {public:  ListNode *deleteDuplicates(ListNode *head)  {      if (!head || !head->next)      {          return head;      }      ListNode* forward = head->next;      ListNode* backward = head;      while (forward-> next!= NULL)      {          if (forward->val == backward->val)          {              forward = forward->next;          }          else          {              backward->next = forward;              backward = forward;              forward = forward->next;          }      }      if (backward->val == forward->val)      {          backward->next = NULL;      }      else      {          backward->next = forward;      }      return head;  }};




标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!