描述
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表为1\to1\to21→1→2,返回1 \to 21→2.
给出的链表为1\to1\to 2 \to 3 \to 31→1→2→3→3,返回1\to 2 \to 31→2→3.
数据范围:链表长度满足 0 \le n \le 1000≤n≤100,链表中任意节点的值满足 |val| \le 100∣val∣≤100
进阶:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)
示例1
输入:
{1,1,2}
返回值:
{1,2}
思路: 遍历传入的链表,对比当前的和过去的,判断val值是否一致,如果一致就舍弃掉当前的;最终达到删除重复值的效果。
代码:
/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
*
* @param head ListNode类
* @return ListNode类
*/
function deleteDuplicates( head ) {
// write code here
let obj = head;
if(!head || !head.next) return head;
let pre = head.next;
while(pre){
if(obj.val === pre.val){
obj.next = pre.next
pre = pre.next;
}else{
pre = pre.next;
obj = obj.next;
}
}
return head;
}
module.exports = {
deleteDuplicates : deleteDuplicates
};