LeetCode:1287. Element Appearing More Than 25% In Sorted Array - Python

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

问题描述:

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

请你找到并返回这个整数

示例 :

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

问题分析:

先看问题,题目要求(1)递增的有序的数组;(2)恰好有一个整数出现的次数超过25%。
解决思路:
方法一:从头扫描数组,并记录第一个超过25%的整数,则立即返回,即可。
方法二:投机取巧,直接使用Python的 collections 库,直接返回即可。

Python3实现:

方法一:
class Solution:
    def findSpecialInteger(self, arr):
        if arr == []:
            return 0
        curr = None
        cnt = 0
        for x in arr:
            if x == curr:
                cnt += 1
            else:
                curr = x
                cnt = 1
            if cnt > len(arr) / 4:
                return curr


if __name__ == '__main__':
    solu = Solution()
    arr = [1, 2, 2, 6, 6, 6, 6, 7, 10]
    print(solu.findSpecialInteger(arr))
方法二:
from collections import Counter


class Solution:
    def findSpecialInteger(self, arr):
        return Counter(arr).most_common(1)[0][0]

if __name__ == '__main__':
    solu = Solution()
    arr = [1, 2, 2, 6, 6, 6, 6, 7, 10]
    print(solu.findSpecialInteger(arr))

声明: 总结学习,有问题或不当之处,可以批评指正哦,谢谢。

题目链接: https://leetcode.com/problems/element-appearing-more-than-25-in-sorted-array/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章