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. 删除排序链表中的重复元素的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode(83)-删除排序链表中的重复元素

[LeetCode]83. 删除排序链表中的重复元素

LeetCode83----删除排序链表中的重复元素

LeetCode-83. 删除排序链表中的重复元素(java)

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

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