「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」
题目
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:

输入:head = [1,1,2]
输出:[1,2]
示例 2:

输入:head = [1,1,2,3,3]
输出:[1,2,3]
提示:
- 链表中节点数目在范围
[0, 300]内 -100 <= Node.val <= 100- 题目数据保证链表已经按升序 排列
解题
解题一:链表
思路
因为题目数据保证链表已经按升序排列,所以不需要记录遍历过哪些数字,只需要前后数字对比即可
代码
/**
* Definition for singly-linked list.
*/
public class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode temp = head;
while (temp != null && temp.next != null) {
while (temp.next != null && temp.next.val == temp.val) {
temp.next = temp.next.next;
}
temp = temp.next;
}
return head;
}
}
总结
性能分析
- 执行耗时:0 ms,击败了 100.00% 的 Java 用户
- 内存消耗:40.8 MB,击败了 20.37% 的 Java 用户