数组中数字出现的次数 II

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

示例 1:

输入:nums = [3,4,3,3]
输出:4
示例 2:

输入:nums = [9,1,7,9,7,9,7]
输出:1
 

限制:

1 <= nums.length <= 10000
1 <= nums[i] < 2^31
 

来源:力扣(LeetCode)


排序后相同(相等,equal)的数字会相邻排列。从第一个元素开始,到下一个不一样的元素时,计算上一个元素出现的次数。次数为1,即是解。


"""
@author: WowlNAN
@created: 2020-08-01 00:00
@github: https://github.com/WowlNAN
"""

class Solution:
    def MergeSort(self, data):
        if len(data)<=1:
            return data
        mid=len(data)//2
        data1=self.MergeSort(data[:mid])
        data2=self.MergeSort(data[mid:])
        return self.Merge(data1, data2)

    def Merge(self, data1, data2):
        data=[]
        l1=len(data1)
        l2=len(data2)
        i=0
        j=0
        while i<l1 and j<l2:
            if data1[i]<=data2[j]:
                data.append(data1[i])
                i+=1
            else:
                data.append(data2[j])
                j+=1
        if i<l1:
            data+=data1[i:]
        else:
            data+=data2[j:]
        return data

    def singleNumber(self, nums: List[int]) -> int:
        a=nums
        a=self.MergeSort(a)
        b=a[0]
        c=0
        i=0
        l=len(a)
        for i in range(l):
            if a[i]==b:
                c+=1
            else:
                if c==1:
                    return b
                b=a[i]
                c=1
        if c==1:
            return b
        return -1

猜你喜欢

转载自blog.csdn.net/qq_21264377/article/details/107724560