TypeScript刷LeetCode[12] 83. 删除排序链表中的重复元素
王昭君 3/26/2021 TypeScriptLeetCode算法链表
# 题目
难度:简单
存在一个按升序排列的链表,给你这个链表的头节点head
,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
提示:
- 链表中节点数目在范围
[0, 300]
内 -100 <= Node.val <= 100
- 题目数据保证链表已经按升序排列
# 代码
简单粗暴,一次遍历
因为要删除链表元素,所以一直判断当前节点的next
如果next
和当前节点相同,删掉next
,否则往下遍历
这里要注意,判断的时候需要判断p
是否为空,可以用p?.next
语法(然而 LeetCode 的代码编辑器给我标波浪)
function deleteDuplicates(head: ListNode | null): ListNode | null {
if (!head) {
return head
}
let p = head
while (p && p.next) {
if (p.val === p.next.val) {
p.next = p.next.next
} else {
p = p.next
}
}
return head
}