• LeetCode 83 删除排序链表中的重复元素


    链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

    示例 1:

    输入: 1->1->2
    输出: 1->2
    示例 2:

    输入: 1->1->2->3->3
    输出: 1->2->3



    这也是一个链表的删除问题,所以要找到待删节点的前一个节点。由于链表是已排序的,那么头节点一定是最小的节点,它不用被删除,并且重复的元素一定是在一起的。所以首先定义一个指针,指向头节点。然后当出现重复元素的时候,只保留第一个元素,删掉其余的相同元素。如果下一个节点不是重复的,那么就将指针向前移动一位。

    c++代码如下:

     1 class Solution {
     2 public:
     3     ListNode* deleteDuplicates(ListNode* head) {
     4         auto cur = head;
     5         while(cur){
     6             if(cur -> next && cur -> val == cur -> next -> val){
     7                 cur -> next = cur -> next -> next;
     8             }
     9             else{
    10                 cur = cur -> next;
    11             }  
    12         }
    13         
    14         return head;
    15     }
    16 };

    在这里需要注意的是,第5行的while里面必须是cur,而不能是cur -> next,因为当输入为[ ]的时候,后者会报错,因为头节点就为空,不存在下一个节点指向。

  • 相关阅读:
    Commander Nodejs 命令行接口
    数据库集群 ---续集
    数据库集群
    实时查看linux下的日志
    自动化测试
    python中list和dict
    super与this的用法
    数据类型
    父类调用子类方法
    子类调用父类方法
  • 原文地址:https://www.cnblogs.com/hellosnow/p/11557501.html
Copyright © 2020-2023  润新知