此文章是vip文章,如何查看?  

1,点击链接获取密钥 http://nicethemes.cn/product/view29882.html

2,在下方输入文章查看密钥即可立即查看当前vip文章


2020-05-29—力扣刷刷-83.删除排序链表中的重复元素

  • 时间:
  • 浏览:
  • 来源:互联网

在这里插入图片描述
题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/

题目分析:

1.由于链表已经排序,删除重复元素,只需从前到后判断当前元素是否与后面元素重复,若重复,删除其中一个即可
2.由于链表结点的特征性,因此我们可以通过将结点的值与它之后的结点进行比较来确定它是否为重复结点。如果它是重复的,我们更改当前结点的 next 指针,以便它跳过下一个结点并直接指向下一个结点之后的结点。
关键点:是指针的是否改变

java:

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode current=head;//指定current指针指向头结点head
        while (current !=null && current.next!=null){
            if (current.next.val==current.val){
                current.next=current.next.next;
            }else{
                current=current.next;
            }
        }
    return head;
    }
    
}

python:

class Solution(object):
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        current=head #指定current指针=head,为移动指针
        while current!= None and current.next!= None:
            if current.val==current.next.val:
                current.next=current.next.next
            else:
                current=current.next
        return head

时间复杂度:O(n)因为列表中的每一个结点都要被检查一次

空间复杂度:O(1),没有使用额外的空间

本文链接http://element-ui.cn/news/show-353789.aspx