Leetcode 数组 有序数组中出现次数超过25%的元素(1287)

Posted Timeashore

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 数组 有序数组中出现次数超过25%的元素(1287)相关的知识,希望对你有一定的参考价值。

题目

给你一个非递减的?有序?整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25%。

请你找到并返回这个整数

示例:

输入:arr = [1,2,2,6,6,6,6,7,10]
输出:6

提示:

1 <= arr.length <= 10^4
0 <= arr[i] <= 10^5

解答

# class Solution:
#     def findSpecialInteger(self, arr):
#         d = {}
#         length = len(arr)
#         fo = length // 4 + 1
#         for x in arr:
#             if x in d:
#                 d[x] += 1
#                 if d[x] >= fo:
#                     return x
#             else:
#                 d[x] = 1
#         return x


# 不用额外空间
class Solution:
    def findSpecialInteger(self, arr):
        if len(arr) == 1:
            return arr[0]

        length = len(arr)
        result, cnt = arr[0], 1
        for x in range(1, length):
            if arr[x] == result:
                cnt += 1
                if cnt*4 > length:
                    return result
            else:
                result = arr[x]
                cnt = 1


s = Solution()
ans = s.findSpecialInteger([1, 2, 2, 6, 6, 6, 6, 7, 10])
print(ans)
# 6

以上是关于Leetcode 数组 有序数组中出现次数超过25%的元素(1287)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-15双周赛-1287-有序数组中出现次数超过25%的元素

1287. 有序数组中出现次数超过25%的元素『简单』

[LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字

LeetCode(剑指 Offer)- 39. 数组中出现次数超过一半的数字

LeetCode(剑指 Offer)- 39. 数组中出现次数超过一半的数字

数组中出现次数超过一半的数字(Python and C++解法)