题目描述
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表为1→1→2,返回1→2.
给出的链表为1→1→2→3→3,返回1→2→3.
数据范围:链表长度满足0≤n≤100,链表中任意节点的值满足∣val∣≤100
进阶:空间复杂度O(1),时间复杂度O(n)
示例1
输入:
{1,1,2}
复制
返回值:
{1,2}
复制
示例2
输入:
{}
复制
返回值:
{}
求解思路&实现代码
着重需要注意的一点是:重复的数字只会出现一次。
import java.util.*;
public class Solution {
public ListNode deleteDuplicates (ListNode head) {
//空链表 fast-template
if(head == null)
return null;
//遍历指针
ListNode cur = head;
//指针当前和下一位不为空
while(cur != null && cur.next != null){
//如果当前与下一位相等则忽略下一位
if(cur.val == cur.next.val)
cur.next = cur.next.next;
//否则指针正常遍历
else
cur = cur.next;
}
return head;}
}
该程序实现了一个功能,即删除给定的有序链表中的重复元素,保证每个元素只出现一次。通过使用两个指针,当发现当前节点值等于下一个节点值时,跳过下一个节点。算法的时间复杂度为O(n),空间复杂度为O(1)。
4276

被折叠的 条评论
为什么被折叠?



