当前位置: 首页 > 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综合实验
  • 山西太原一居民小区发生爆炸,应急管理部派工作组赴现场
  • 李铁案二审今日宣判,押送警车已进入法院
  • 兴业银行一季度净赚超237亿降逾2%,营收降逾3%
  • 中国建设银行浙江省分行原党委书记、行长高强接受审查调查
  • “90后”樊鑫履新乌兰察布市察右中旗副旗长人选
  • 国家卫健委:工作相关肌肉骨骼疾病、精神和行为障碍成职业健康新挑战