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

NowCode JZ39 数组中出现次数超过一半的数字 简单

题目 - 点击直达

  • 1. JZ39 数组中出现次数超过一半的数字 简单
    • 1. 题目详情
      • 1. 原题链接
      • 2. 题目要求
      • 3. 基础框架
    • 2. 解题思路
      • 1. 思路分析
      • 2. 时间复杂度
      • 3. 代码实现

1. JZ39 数组中出现次数超过一半的数字 简单

1. 题目详情

1. 原题链接

NowCode JZ39 数组中出现次数超过一半的数字 简单

2. 题目要求

描述
给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。

数据范围:n \le 50000n≤50000,数组中元素的值 0 \le val \le 100000≤val≤10000

要求:空间复杂度: O ( 1 ) O(1) O(1),时间复杂度 O ( n ) O(n) O(n)
输入描述:
保证数组输入非空,且保证有解

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

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

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

3. 基础框架

● Cpp代码框架

class Solution {
public:int MoreThanHalfNum_Solution(vector<int>& numbers) {}
};

2. 解题思路

哈希映射

1. 思路分析

( 1 ) (1) (1) 数组 n u m b e r s numbers numbers中的数分别映射到 u n o r d e r e d m a p < i n t , i n t > unordered_map<int, int> unorderedmap<int,int> k e y key key,每个数出现的次数记录在 k e y key key对应的 v a l u e value value中;
( 2 ) (2) (2) 遍历一遍 n u m b e r s numbers numbers数组,映射并记录每一个数出现的次数到$unordered_map<int, int>中;
( 3 ) (3) (3) 再次遍历一遍 n u m b e r s numbers numbers数组,在 u n o r d e r e d m a p < i n t , i n t > unordered_map<int, int> unorderedmap<int,int>中找到每一个数映射的出现次数,如果出现的次数超过了 n u m b e r s numbers numbers数组的一半,则返回对应的数;反之继续判断下一个数出现的次数直到遍历完整个数组。

2. 时间复杂度

O ( N ) O(N) O(N)

遍历两次 n u m b e r s numbers numbers数组,遍历了 2 ∗ N 2*N 2N次。

3. 代码实现

class Solution {
public:int MoreThanHalfNum_Solution(vector<int>& numbers) {// write code hereunordered_map<int, int> m;for(auto& e : numbers){m[e]++;}int size = numbers.size() / 2;for(auto& e : numbers){if(m[e] > size){return e;}}return -1;}
};

T h e The The E n d End End

http://www.lryc.cn/news/225270.html

相关文章:

  • 【SA8295P 源码分析 (一)】119 - QNX 中如何在代码中快速配置 TLMM_GPIO 或 PMIC_GPIO 中断 及 中断回调函数
  • 电大搜题:开启智能学习新时代
  • 19、Flink 的Table API 和 SQL 中的自定义函数及示例(4)
  • Vue23-props配置功能
  • 怎样使用ovsyunlive在web网页上直接播放rtsp/rtmp视频
  • MySQL | 查询接口性能调优、编码方式不一致导致索引失效
  • ASUS华硕灵耀X2 Duo UX481FA(FL,FZ)_UX4000F工厂模式原装出厂Windows10系统
  • 企业安全—三保一评
  • “深入理解机器学习性能评估指标:TP、TN、FP、FN、精确率、召回率、准确率、F1-score和mAP”
  • Linux软件包(源码包和二进制包)
  • Leetcode-394 字符串解码(不会,复习)
  • 如何在Linux上搭建本地Docker Registry并实现远程连接
  • assets_common.min.js
  • 前端工程化(vue2)
  • 深度学习(生成式模型)——Classifier Guidance Diffusion
  • Hadoop架构、Hive相关知识点及Hive执行流程
  • P1529 [USACO2.4] 回家 Bessie Come Home 题解
  • Python语法基础(条件语句 循环语句 函数 切片及索引)
  • Debian 9 Stretch APT问题
  • 遍历List集合和Map进行修改和删除报java.util.ConcurrentModificationException错误详解
  • Android从一个APP跳转到另外一个APP
  • 我的创作纪念日——创作者2年
  • 大数据之LibrA数据库系统告警处理(ALM-12032 ommdba用户或密码即将过期)
  • C_3练习题
  • CentOS7 安装Jenkins 2.414.3 详细教程
  • chatglm3-6b记录问答对
  • k8s ingress 代理 mysql 3306端口
  • Informix管理共享内存
  • Webpack 中 Plugin 的作用是什么?常用 plugin 有哪些?
  • CSRF(跨站请求伪造)攻击演示