LeetCode#83 Remove Duplicates fr

2016-12-01  本文已影响12人  如烟花非花

问题描述

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,

Given 1->1->2, return 1->2.

Given 1->1->2->3->3, return 1->2->3.

Subscribe to see which companies asked this question

补充说明:

给定一个排序过后的链表,将其中重复的值去掉,返回成功后的结果。

方案分析

  1. 如何判断值是否重复?判断两个元素值是否重复,需要两个指针,分别指向要比较的两个元素。
  2. 如何比较?其实比较简单,比较相邻的两个元素,如果值相同,则删除后边那个元素。
  3. 指针如何移动?如果比较的两个元素的值相同,删除后面那个元素后,将后面的那个指针后移,继续比较;

    如果比较的两个元素的值不同,则同时后移两个指针。

python实现

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if not head:
            return []
        cur_node = head
        next_node = head.next
        while(next_node):
            if cur_node.val == next_node.val:
                cur_node.next = next_node.next
            else:
                cur_node = cur_node.next
            next_node = cur_node.next
        return head
上一篇 下一篇

猜你喜欢

热点阅读