[2021-09-16][简单][NC73]数组中出现次数超过一半的数字

题目来源(牛客网)[https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=188&&tqId=38636&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking]

描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000,0<=数组元素<=10000

示例1
输入:[1,2,3,2,2,2,5,4,2]
返回值:2

示例2
输入:[3,3,3,3,2,2,2]
返回值:3

示例3
输入:[1]
返回值:1

解题思路:
1、使用set方法对数组进行去重
2、遍历去重后的数组,用count方法获取每个set后元组元素在原数组中出现的次数
3、如果出现次数大于原数组长度的一半则返回该元素。这里无需考虑长度的奇偶性

class Solution:
    def MoreThanHalfNum_Solution(self, numbers):
        # write code here
        numbers2 = set(numbers)
        flag = len(numbers)
        
        for number in numbers2:
            if numbers.count(number) > flag/2:
                return number
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容