描述
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表为1->1->2,返回1->2.
给出的链表为1→1→2→3→3,返回1→2→3.
示例1
输入:
{1,1,2}
返回值:
{1,2}思路
这个就是对链表进行遍历,没遍历到一个元素时,就判断该节点往后是否有重复的,如果有重复的,就一直往后走,直到遇到不重复元素为止,然后删除中间的重复元素即可。
AC 代码
public ListNode deleteDuplicates (ListNode head) {
// write code here
if (head == null) {
return head;
}
ListNode node = new ListNode(0);
node.next = head;
while (head != null && head.next != null) {
// 当 head 与 next 节点相等时,一直往后走
while (head.next != null && head.val == head.next.val) {
head.next = head.next.next;
}
// 删除中间重复的元素
head = head.next;
}
return node.next;
} - 时间复杂度:O(n),n 为链表长度
- 空间复杂度:O(1)
最后
大家可以去 【牛客网-题库-在线编程】去练习一下。
可以去微信搜索:【蘑菇睡不着】交个朋友~
也可以扫描下方二维码。

京公网安备 11010502036488号