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

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

Points

  • 链表

题意

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

示例 1:

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

示例 2:

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

示例 3:

输入: []
输出: []

示例 4:

输入: [1]
输出: [1]

算法

双指针(n2 = n1->next)遍历排序链表

如果两指针值相等,删除后一节点。

(注意判断n2是否越界!!!)

code

 1 /*
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* deleteDuplicates(ListNode* head) {
12         if(head == NULL)//链表为空,直接返回
13             return head;
14 ListNode *p = head, *nextp; 15 if(head->next != NULL) 16 nextp = head->next; 17 else //只有一个元素,直接返回 18 return head;
19 while(nextp != NULL)//遍历链表 20 { 21 if(nextp->val == p->val)//出现重复 22 { 23 p->next = nextp->next;//删除重复节点 24 delete nextp; 25 nextp = p->next; 26 } 27 else 28 { 29 if(nextp->next == NULL)//边界判断 30 break; 31 nextp = nextp->next; 32 p = p->next; 33 } 34 } 35 return head; 36 } 37 };

 

全部评论

相关推荐

02-11 17:47
已编辑
门头沟学院 Java
神哥不得了:神哥来啦~建议先在网上找一些高频的八股去背,然后再去广泛的背八股,这样的学习会更有效率一些,简历的这两个项目建议换掉,换成两个高质量的项目,这样的话获得面试的比例会更高一点,专业技能的话排版要注意一下,要加句号的话就都加,要不加就都不加,荣誉奖项的话写在教育经历里边吧,这个确实没有太多的含金量
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务