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

151 篇文章 2 订阅
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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值