Leetcode 83. 删除排序链表中的重复元素
Posted Uitachi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
以上是关于Leetcode 83. 删除排序链表中的重复元素的主要内容,如果未能解决你的问题,请参考以下文章