青训7_1114_02 找出整型数组中占比超过一半的数(字典值获取用get安全)

青训7_1114_02 找出整型数组中占比超过一半的数(字典值获取用get安全)

文章目录

  • 青训7_1114_02 找出整型数组中占比超过一半的数(字典值获取用get安全)
    • 问题描述
    • 测试样例
      • 示例
    • 思路
      • 解题思路
    • 答案
    • 注意点 获取字典值写法推荐用get含默认值
      • 字典的创建:
      • 2 字典的访问和设置 推荐原因!!:

问题描述

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

测试样例

输入:array = [1,3,8,2,3,1,3,3,3] 输出:3
输入:array = [5,5,5,1,2,5,5]输出:5
输入:array = [9,9,9,9,8,9,8,8]输出:9

示例

def solution(array):# Edit your code herereturn 0if __name__ == "__main__":# Add your test cases hereprint(solution([1, 3, 8, 2, 3, 1, 3, 3, 3]) == 3)

思路

获取总数/2

然后给每个数字计算数量(用字典)

解题思路

首先计算数组长度的一半,作为判断标准

使用字典(dict)来统计每个数字出现的次数

在遍历过程中,一旦发现某个数字的出现次数超过数组长度的一半,就立即返回该数字

答案

def solution(array):# 获取数组长度的一半half_length = len(array) // 2# 使用字典来统计每个数字出现的次数count_dict = {}# 遍历数组,统计每个数字出现的次数for num in array:count_dict[num] = count_dict.get(num, 0) + 1# 如果某个数字出现次数超过半数,直接返回if count_dict[num] > half_length:return numreturn Noneif __name__ == "__main__":# Add your test cases hereprint(solution([1, 3, 8, 2, 3, 1, 3, 3, 3]) == 3)

注意点 获取字典值写法推荐用get含默认值

  1. 字典的创建:

count_dict = {}  # 创建空字典

大括号 {} 是创建字典的语法。字典是一种键值对的数据结构,每个键(key)对应一个值(value)。

2 字典的访问和设置 推荐原因!!:

# 方式1:使用中括号 []
count_dict[num] = count_dict[num] + 1  # 如果 num 不存在会报错# 方式2:使用 get() 方法(更安全)
count_dict[num] = count_dict.get(num, 0) + 1  # 如果 num 不存在返回默认值 0

.get() 方法的好处:

  • get(key, default_value)
    

    有两个参数:

    • key: 要查找的键
    • default_value: 如果键不存在时返回的默认值
  • 更安全,避免 KeyError 错误

举个具体例子:

# 假设数组是 [1, 3, 1]
count_dict = {}# 第一次遇到 1
count_dict[1] = count_dict.get(1, 0) + 1
# 等价于:count_dict[1] = 0 + 1
# 现在 count_dict 是 {1: 1}# 第一次遇到 3
count_dict[3] = count_dict.get(3, 0) + 1
# 等价于:count_dict[3] = 0 + 1
# 现在 count_dict 是 {1: 1, 3: 1}# 第二次遇到 1
count_dict[1] = count_dict.get(1, 0) + 1
# 等价于:count_dict[1] = 1 + 1
# 最终 count_dict 是 {1: 2, 3: 1}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/16708.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

RadSystems 自定义页面全攻略:个性化任务管理系统的实战设计

系列文章目录 探索RadSystems:低代码开发的新选择(一)🚪 探索RadSystems:低代码开发的新选择(二)🚪 探索RadSystems:低代码开发的新选择(三)&…

【开发基础】语义化版本控制

语义化版本控制 基础三级结构主版本号次版本号修正版本号 思维导图在node包管理中的特殊规则 参考文件 基础 语义化版本控制是一套通用的包/库的版本管理规范。在各类语言的包管理中都有用到,一般以x.x.x的形式出现在包的命名中。 三级结构 在语义化版本控制中&a…

IDC 报告:百度智能云 VectorDB 优势数量 TOP 1

近日,IDC 发布了《RAG 与向量数据库市场前景预测》报告,深入剖析了检索增强生成(RAG)技术和向量数据库市场的发展趋势。报告不仅绘制了 RAG 技术的发展蓝图,还评估了市场上的主要厂商。在这一评估中,百度智…

操作系统——同步

笔记内容及图片整理自XJTUSE “操作系统” 课程ppt,仅供学习交流使用,谢谢。 背景 解决有界缓冲区问题的共享内存方法在并发变量上存在竞争条件,即多个并发进程访问和操作同一个共享数据,从而其执行结果与特定访问次序有关。这种…

IAR调试时输出文本数据到电脑(未使用串口)

说明 因为板子没引出串口引脚,没法接USB转TTL,又想要长时间运行程序并保存某些特定数据,所以找到了这个办法。为了写数据到本机,所以板子必须运行在IAR的debug模式下。 参考:IAR环境下变量导出方法:https…

基于Java Springboot美食食谱推荐系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA 数据库&…

Java集合(Collection+Map)

Java集合&#xff08;CollectionMap&#xff09; 为什么要使用集合&#xff1f;泛型 <>集合框架单列集合CollectionCollection遍历方式List&#xff1a;有序、可重复、有索引ArrayListLinkedListVector&#xff08;已经淘汰&#xff0c;不会再用&#xff09; Set&#xf…

vue 项目使用 nginx 部署

前言 记录下使用element-admin-template 改造项目踩过的坑及打包部署过程 一、根据权限增加动态路由不生效 原因是Sidebar中路由取的 this.$router.options.routes,需要在计算路由 permission.js 增加如下代码 // generate accessible routes map based on roles const acce…

vue3 中直接使用 JSX ( lang=“tsx“ 的用法)

1. 安装依赖 npm i vitejs/plugin-vue-jsx2. 添加配置 vite.config.ts 中 import vueJsx from vitejs/plugin-vue-jsxplugins 中添加 vueJsx()3. 页面使用 <!-- 注意 lang 的值为 tsx --> <script setup lang"tsx"> const isDark ref(false)// 此处…

uniapp如何i18n国际化

1、正常情况下项目在代码生成的时候就已经有i18n的相关依赖&#xff0c;如果没有可以自行使用如下命令下载&#xff1a; npm install vue-i18n --save 2、创建相关文件 en文件下&#xff1a; zh文件下&#xff1a; index文件下&#xff1a; 3、在main.js中注册&#xff1a…

【视觉SLAM】4b-特征点法估计相机运动之PnP 3D-2D

文章目录 1 问题引入2 求解P3P 1 问题引入 透视n点&#xff08;Perspective-n-Point&#xff0c;PnP&#xff09;问题是计算机视觉领域的经典问题&#xff0c;用于求解3D-2D的点运动。换句话说&#xff0c;当知道n个3D空间点坐标以及它们在图像上的投影点坐标时&#xff0c;可…

wsl2配置文件.wslconfig不生效

问题 今天在使用wsl时&#xff0c;通过以下配置关闭swap内存&#xff0c;但是发现重启虚拟机之后也不会生效。 [wsl2] swap0 memory16GB后来在微软官方文档里看到&#xff0c;只有wsl2才支持通过.wslconfig文件配置&#xff0c;于是通过wsl -l -v查看当前wsl版本&#xff0c;…

借助Excel实现Word表格快速排序

实例需求&#xff1a;Word中的表格如下图所示&#xff0c;为了强化记忆&#xff0c;希望能够将表格内容随机排序&#xff0c;表格第一列仍然按照顺序编号&#xff0c;即编号不跟随表格行内容调整。 乱序之后的效果如下图所示&#xff08;每次运行代码的结果都不一定相同&#x…

系统架构设计师:系统架构设计基础知识

从第一个程序被划分成模块开始&#xff0c;软件系统就有了架构。 现在&#xff0c;有效的软件架构及其明确的描述和设计&#xff0c;已经成为软件工程领域中重要的主题。 由于不同人对Software Architecture (简称SA) 的翻译不尽相同&#xff0c;企业界喜欢叫”软件架构“&am…

T6识别好莱坞明星

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 导入基础的包 from tensorflow import keras from tensorflow.keras import layers,models import os, PIL, pathlib import matplotlib.pyplot as pl…

MybatisPlus的基础使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1、基础crud增加insert()方法&#xff1a; 删除修改查询 2、分页查询配置分页拦截器使用分页查询功能开启MP日志在yml配置文件中配置日志查看日志 3、条件查询条…

基于stm32的智能变频电冰箱系统

基于stm32的智能变频电冰箱系统 持续更新&#xff0c;欢迎关注!!! 基于stm32的智能变频电冰箱系统 随着集成电路技术的发展&#xff0c;单片微型计算机的功能也不断增强&#xff0c;许多高性能的新型机种不断涌现出来。单片机以其功能强、体积小、可靠性高、造价低和开发周期短…

【提高篇】3.3 GPIO(三,工作模式详解 上)

目录 一,工作模式介绍 二,输入浮空 三,输入上拉 一,工作模式介绍 GPIO有八种工作模式,参考下面列表,我们先有一个简单的认识。 二,输入浮空 在输入浮空模式下,上拉/下拉电阻为断开状态,施密特触发器打开,输出被禁止。输入浮空模式下,IO口的电平完全是由外部电路…

代码训练营 day66|Floyd 算法、A * 算法、最短路算法总结

前言 这里记录一下陈菜菜的刷题记录&#xff0c;主要应对25秋招、春招 个人背景 211CS本CUHK计算机相关硕&#xff0c;一年车企软件开发经验 代码能力&#xff1a;有待提高 常用语言&#xff1a;C 系列文章目录 第66天 &#xff1a;第十一章&#xff1a;图论part11 文章目录…

Vue中template模板报错

直接<v出现如下模板&#xff0c;出现如下错误 注意两个地方&#xff1a; 1.template里面加一个div标签 2.要写name值 如下图