算法10(链表)-删除链表中的重复结点

题目:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:
输入: 1->1->2
输出: 1->2
示例 2:

输入: 1->1->2->3->3
输出: 1->2->3

解析:本题是一个链表操作题,主要考察我们对于链表的整体熟悉程度,还是相对比较简单的,指针指向第一个结点,判断(如果当前元素的下一个结点的val值刚好等于当前结点的val值,只需要将当前指针指向下下个结点)。
算法:循环的条件是当当前结点不为空并且当前结点的下一结点也不为空,如果存在下一结点的值等于当前结点值,就让当前指针指向当前指针的下一个结点,画一张图有助于理解。
图解如下
image.png
具体实现代码如下

只是实现了算法的过程,没有写具体的类
  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

文章标题:算法10(链表)-删除链表中的重复结点

字数:388

本文作者:一叶知秋

发布时间:2020-07-04, 16:16:47

最后更新:2020-07-04, 16:17:38

原始链接:http://yoursite.com/2020/07/04/arithmtic/10-%E9%93%BE%E8%A1%A8/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

相册 github