删除排序链表中的重复元素(java实现)
力扣 83 删除排序链表中的重复元素
题目说明
给定一个排序链表(已经按顺序排序好的链表),删除所有重复的元素,使得每个元素只出现一次。
示例
例1
1 | 输入: 1->1->2 |
例2
1 | 输入: 1->1->2->3->3 |
笔者理解
此题是一道排序链表算法问题,在力扣题库中被定义为简单题。
解法
此题中的链表为排序链表,要求为去除重复节点,所以不需要多余思考,直接依链判断即可,就让我们看看具体如何实现吧。
1->1->2->3->3
↑temp所在位置
因为1==1,所以链表的第一个1的next要指向第二节点的下一个节点2;
链表变为:1->2->3->3
因为1!=2,所以链表从下一个2开始判断,也就是中间值temp移向下一个节点2;
链表变为:1->2->3->3
因为2!=3,所以链表从下一个3开始判断,也就是中间值temp移向下一个节点3;
链表变为:1->2->3->3
因为3==3,所以链表的第一个3的next要指向最后一个节点的下一个节点,也就是null;
链表变为:1->2->3->
此时temp的下一个节点等于null,结束循环
1 | /** |
时间和空间效率都较高,可见此解法比较适合此题;
总结
本题是一道有意思的简单题,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!








