问题描述:
给你一个非递减
的有序
整数数组,已知这个数组中恰好
有一个整数,它的出现次数超
过数组元素总数的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/