LeetCode 剑指 Offer II 004. 只出现一次的数字

127 阅读1分钟

题目地址(4K/">剑指 Offer II 004. 只出现一次的数字 )

leetcode-cn.com/problems/WG…

题目描述

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

 

示例 1:

输入:nums = [2,2,3,2]
输出:3


示例 2:

输入:nums = [0,1,0,1,0,1,100]
输出:100


 

提示:

1 <= nums.length <= 3 * 104
-231 <= nums[i] <= 231 - 1
nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次

 

进阶:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

 

注意:本题与主站 137 题相同:https://leetcode-cn.com/problems/single-number-ii/

思路

粗暴解法

代码

  • 语言支持:Python3

Python3 Code:


class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        from collections import Counter
        counter = Counter(nums).most_common()
        x,y = counter[-1]
        # print(x,y)
        return x

复杂度分析

令 n 为数组长度。

  • 时间复杂度:O(nlogn)O(nlogn)
  • 空间复杂度:O(n)O(n)