当前位置: 首页 > news >正文

Python-8: 找出整型数组中占比超过一半的数

问题描述

小R从班级中抽取了一些同学,每位同学都会给出一个数字。已知在这些数字中,某个数字的出现次数超过了数字总数的一半。现在需要你帮助小R找到这个数字。

代码:

def solution(array):

    if not array:

        return 0

   

    candidate = array[0]

    count = 1

   

    for num in array[1:]:

        if num == candidate:

            count += 1

        else:

            count -= 1

            if count == 0:

                candidate = num

                count = 1

   

    # 验证候选元素是否确实出现次数超过一半

    count = 0

    for num in array:

        if num == candidate:

            count += 1

   

    if count > len(array) // 2:

        return candidate

    else:

        return 0


 

if __name__ == "__main__":

    # Add your test cases here

    print(solution([1, 3, 8, 2, 3, 1, 3, 3, 3]) == 3)

相关文章:

  • 医疗领域的利器:深入理解3D Slicer软件
  • Go:使用共享变量实现并发
  • 多种方案对比实现 Kaggle 比赛介绍进行行业分类
  • 线代第二章矩阵第一课:矩阵的概念
  • 数据一致性的守护神:深入Spring声明式事务管理 (@Transactional)
  • Redis适用场景
  • 双目视觉中矩阵等参数说明及矫正
  • 分布式专题-Redis Cluster集群运维与核心原理剖析
  • Redis面试问题缓存相关详解
  • 插件化设计,打造个性化音乐体验!
  • 算法——果蝇算法
  • C++23 Lambda 表达式上的属性:P2173R1 深度解析
  • 【ROS】map_server 地图的保存和加载
  • 50、Spring Boot 详细讲义(七) Spring Boot 与 NoSQL
  • 在生信分析中,从生物学数据库中下载的序列存放在哪里?要不要建立一个小型数据库,或者存放在Gitee上?
  • 常见数据结构
  • 【系统分析师之1、绪论+2、数学与工程基础】
  • 【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——LED、按键测试
  • 删除win11电脑上的阿尔巴尼亚输入法SQI
  • OSPF综合实验
  • 全国首例!上市公司董监高未履行公开增持承诺,投资者起诉获赔
  • 无视规范开“远端”、企业云端被窃密,国安部:莫让运维成运“危”
  • 5月1日起,涉外婚姻登记将在上海市16区全面铺开
  • 中华人民共和国和阿塞拜疆共和国关于建立全面战略伙伴关系的联合声明
  • 世界读书日|阅读在上海
  • 深一度|坚守17年,这件事姚明就算赔钱也在继续做