题目:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
解析:本题是一个链表操作题,主要考察我们对于链表的整体熟悉程度,还是相对比较简单的,指针指向第一个结点,判断(如果当前元素的下一个结点的val值刚好等于当前结点的val值,只需要将当前指针指向下下个结点)。
算法:循环的条件是当当前结点不为空并且当前结点的下一结点也不为空,如果存在下一结点的值等于当前结点值,就让当前指针指向当前指针的下一个结点,画一张图有助于理解。
图解如下
具体实现代码如下
只是实现了算法的过程,没有写具体的类
public ListNode deleteDuplicates(ListNode head){
if(head == null)return head;
ListNode curr = head;
while (curr != null && curr.next != null){
if(curr.next.val == curr.val){
curr.next = curr.next.next;
}else{
curr = curr.next;
}
}
return head;
}
这里要将头结点保存下来,因为不保存下来的话,直接返回curr的话是返回的head.next结点链表,不是完整的链表。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1371769065@qq.com