码迷,mamicode.com
首页 > 编程语言 > 详细

Leetcode 83. 删除排序链表中的重复元素

时间:2020-05-29 19:22:51      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:with   问题   let   error:   code   描述   turn   return   else   

问题描述

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

示例 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;

 

Leetcode 83. 删除排序链表中的重复元素

标签:with   问题   let   error:   code   描述   turn   return   else   

原文地址:https://www.cnblogs.com/fresh-coder/p/12989054.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!