「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」
题目描述
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。
示例 1:
输入:head = [1,1,2] 输出:[1,2]
力扣(LeetCode)链接:leetcode-cn.com/problems/re…
解题思路
- 链表为有序链表,相同节点是连续的
- 遍历链表,当前节点的值和下个节点的值相等时,修改当前节点的 next 为下个节点的 next
- 处理边界条件,head 为空时返回 head
代码实现
var deleteDuplicates = function(head) {
if (!head) return head
let curr = head
while(curr.next) {
if (curr.val === curr.next.val) {
//如果当前节点和下个节点的值相同,则删除下个节点
curr.next = curr.next.next
} else {
curr = curr.next
}
}
return head
};
如有错误欢迎指出,欢迎一起讨论!