zoukankan      html  css  js  c++  java
  • Leetcode 83. 删除排序链表中的重复元素

    问题描述

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

    示例 1:

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

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

    代码 

     1 class Solution {
     2 public:
     3     ListNode* deleteDuplicates(ListNode* head) {
     4         ListNode* p = head;
     5         while(p != NULL && p->next != NULL){
     6             if(p->val == p->next->val ){
     7                 p->next = p->next->next;
     8             }
     9             else{
    10                 p = p->next;
    11             }
    12             // if(p != NULL && p->next != NULL && p->next->val != p->val){
    13             //     p = p->next;
    14             // }
    15         }
    16 
    17         return head;
    18         
    19     }
    20 };

    总结

    1. 对于p指针修改相当于对原链表修改(p->next = p->next->next) , p = p->next 为更新p,并没有对原链表修改。

    2.以后对链表的操作循环或者判断条件应当注意用 

    p != NULL && p->next != NULL

    如 5和12 行代码,否则容易报试图访问空指针错误

    runtime error: member access within null pointer of type 'struct ListNode'

    所以应该注意空指针的判断

    3.本程序存在大量内存泄漏,若用Java  有垃圾回收机制

    加上

    ListNode* node = p->next;
    p->next = p->next->next;
    node = NULL;
  • 相关阅读:
    02-02:springboot 整合filter
    02-01:springboot整合servlet开发
    01-SpringBoot项目:helloworld
    SpringBoot
    JavaScript面试题
    vue的生命周期
    小程序下的兼容性问题
    短短几行css代码实现滚动条效果
    Apache服务器的安装和配置
    闭包
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/12989054.html
Copyright © 2011-2022 走看看