分治法解决众数重数

问题 D: 22-数组-2-众数问题
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 128 MB

题目描述
问题描述:
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,其中重数最大的元素称为众数。
例如,S={1,2,2,2,3,5},则S的众数是2,其重数为3。
编程任务:
对于给定的由n 个正整数组成的多重集合S,编程计算S 的众数及其重数。
输入
单样例。第1行输入集合S中元素个数n(1≤n≤50000);接下来的n 行中,每行输入一个正整数x(0≤x≤105)。
输出
输出结果包括2行,第1行给出众数,第2行是该众数的重数。(如果有多个众数,只输出最小的那个)
样例输入 Copy
6
1
2
2
2
3
5
样例输出 Copy
2
3

#include<stdio.h>
#include<stdlib.h>
int split(int arr[], int left, int right)
{int middle = (left + right) / 2;while (arr[middle] == arr[middle + 1]){middle++;}return middle;
}int find_mode_num(int arr[], int left, int right)
{int mode_num[100000] = { 0 };int mode_num_max = 0; int i;for ( i = left; i <= right-1; i++){if (arr[i] == arr[i + 1])mode_num[arr[i]]++;else{mode_num_max = (mode_num[arr[i]] > mode_num_max ? mode_num[arr[i]] : mode_num_max);}}mode_num_max = (mode_num[arr[i-1]] > mode_num_max ? mode_num[arr[i-1]] : mode_num_max);return mode_num_max + 1;
}
int cmp(const void* e1, const void* e2)
{return  *(int*)e1 - *(int*)e2;
}
int main()
{int n, arr[100000] = { 0 };scanf("%d", &n);for (int i = 0; i <= n - 1; i++){scanf("%d", &arr[i]);}qsort(arr, n, sizeof(int), cmp);int left = 0, right = n - 1;while (1){int middle=split(arr, left, right);if (middle <= left || middle >= right)break;int leftmodenum = find_mode_num(arr, left, middle);int rightmodenum = find_mode_num(arr, middle+1, right);if (leftmodenum < rightmodenum){left = middle;}else{right = middle ;}}int num=find_mode_num(arr, left, right);	int nn = 0;for (int i = left; i <= right - 1; i++){nn = 0;while (arr[i] == arr[i + 1]){nn++;i++;}if (nn + 1 == num){printf("%d\n", arr[i]); break;}}printf("%d", num);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于多波束和时间调制平均的相位量化栅瓣抑制方法极其性能极限

概要 为了抑制相位量化所导致的量化栅瓣,在波束合成中引入随机虚拟相移(RVPS,Random Virtual Phase Shift),采用多波束平均(MBS,Multi-beam Average)或时间调制平均(TMA,Time-Modulated Average)方法实现了对量化栅瓣的抑制,仿真验证了方法的有效性及限制,并进一…

印刷企业实施数字工厂管理系统有几个步骤

随着科技的飞速发展&#xff0c;许多传统行业正面临着前所未有的挑战。印刷行业也不例外&#xff0c;尤其在面对生产效率低下&#xff0c;资源浪费严重等问题时&#xff0c;数字工厂管理系统的实施成为了必然选择。那么&#xff0c;印刷企业实施数字工厂管理系统具体有几个步骤…

echarts 柱状图 定时自动轮播(非提示框轮播)

看了很多文档都是实现提示框轮播的&#xff0c;而我要实现的功能是&#xff1a;柱状图有多条数据时&#xff0c;轮播展示其中几条&#xff0c;比如我有100条数据&#xff0c;不能全部展示&#xff0c;设置轮播5条或者10条&#xff0c;依次显示数据&#xff0c;并形成闭环。 &a…

zabbix配置snmp trap--使用snmptrapd和Bash接收器--图文教程

1.前言 我的zabbix的版本是5.0版本&#xff0c;5.0的官方文档没有使用bash接收器的示例&#xff0c;6.0的官方文档有使用bash接收器的示例&#xff0c;但是&#xff0c;下载文件的链接失效&#xff1f;&#xff01; 这里讲解zabbix-server端配置和zabbix web端配置 2.zabbix-…

11、pytest断言预期异常

官方用例 # content of test_exception_zero.py import pytestdef test_zero_division():with pytest.raises(ZeroDivisionError):1/0# content of test_exception_runtimeerror.py import pytestdef test_recursion_depth():with pytest.raises(RuntimeError) as excinfo:def…

高效的单行python脚本

#-- coding: utf-8 -- “”" Created on Wed Dec 6 13:42:00 2023 author: czliu “”" 1. 平方列表推导 #使用列表推导法计算从 1 到 10 的数字平方 squares [x**2 for x in range(1, 11)] print(squares)2.求偶数 #可以使用列表推导式从列表中筛选偶数。还可以…

【Docker】 Docker attach 命令卡死的解决方案

在启动较早期的容器时&#xff0c;出现了使用 docker attach container_name 命令后卡死的问题。本文介绍了如何解决该问题。 首先&#xff0c;在使用 docker attach container_name 命令前需要先保证容器已经开启。此时&#xff0c;输入 docker attach container_name 命令后…

ncnn模型部署——使用VS2019把项目打包成DLL文件

一、项目打包成DLL文件 1.创建动态链接库DLL项目 创建完成&#xff0c;项目中包含源文件dllmain.cpp, pch.cpp&#xff0c;头文件framework.h, pch.h 2.编写和配置DLL项目 &#xff08;1&#xff09;配置pch.h文件&#xff0c;在头文件pch.h中定义宏&#xff0c;宏的作用的是…

【PyTorch】模型

文章目录 1. 模型的创建1.1. 创建方法1.1.1. 通过使用模型组件1.1.2. 通过继承nn.Module类 1.2. 将模型转移到GPU 2. 模型参数初始化3. 模型的保存与加载3.1. 只保存参数3.2. 保存模型和参数 1. 模型的创建 1.1. 创建方法 1.1.1. 通过使用模型组件 可以直接使用模型组件快速…

【Unity动画】Unity 2D动画创建流程

本文以2D为案例&#xff0c;讲解Unity 播放动画的流程 准备和导入2D动画资源 外部导入序列帧生成的 Unity内部制作的 外部导入的3D动画 2.创建动画过程 打开时间轴Ctrl6 选中场景中的一个未来需要播放动画的物体 回到时间轴点击Create一个新动画片段 拖动2D动画资源放入…

什么是SPA(Single Page Application)?它的优点和缺点是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

IT外包对中小企业的独特优势

在竞争激烈的商业环境中&#xff0c;企业的发展稍有缓慢&#xff0c;就很有可能被竞争对手快速赶超、趁机抢占市场。一些中小企业为了更好地应对市场变化和提高自身竞争力&#xff0c;越来越多地转向了IT外包服务。相较于大型企业&#xff0c;中小企业在选择IT外包时能够获得一…

数据结构实验任务七:基于广度优先搜索的六度空间理论验证

问题描述 “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论 可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个&#xff0c;也就是 说&#xff0c;最多通过五个人你就能够认识任何一个陌生人。”假如给你一个社交网络图&#xf…

java中用thumbnailator依赖写一个压缩图片的类,只要图片大小超过几兆就无限循环下去的详细代码实例?(经典)

下面是使用Thumbnailator依赖编写的一个压缩图片的类。该类会不断循环压缩图片&#xff0c;直到图片大小小于指定的阈值&#xff08;以字节为单位&#xff09;。 java Copy code import net.coobird.thumbnailator.Thumbnails; import java.io.File; import java.io.IOExcept…

Tap虚拟网卡

1 概述 Tap设备通常用于虚拟化场景下&#xff0c;其驱动代码位于drivers/net/tun.c&#xff0c;tap与tun复用大部分代码&#xff0c; 注&#xff1a;drivers/net/tap.c并不是tap设备的代码&#xff0c;而是macvtap和ipvtap&#xff1b; 下文中&#xff0c;我们统一称tap&#…

父子进程继承问题:OSError: [Errno 88] Socket operation on non-socket错误记录

目录 1 错误:self.server_address = self.socket.getsockname()OSError: [Errno 88] Socket operation on non-socket 2 错误排查过程 3 解决方法

java中用thumbnailator依赖写一个压缩图片的类,只要图片大小超过固定尺寸就无限循环下去的详细代码实例?

下面是使用thumbnailator依赖编写的一个压缩图片类的详细代码示例&#xff0c;该类会对大小超过固定尺寸的图片进行无限循环压缩。 java Copy code import net.coobird.thumbnailator.Thumbnails; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import…

四、分代垃圾回收机制及垃圾回收算法

学习垃圾回收的意义 Java 与 C等语言最大的技术区别&#xff1a;自动化的垃圾回收机制&#xff08;GC&#xff09; 为什么要了解 GC 和内存分配策略 1、面试需要 2、GC 对应用的性能是有影响的&#xff1b; 3、写代码有好处 栈&#xff1a;栈中的生命周期是跟随线程&…

重型堆垛机钢丝绳维护经验

钢丝绳是重型堆垛机一个非常重要的组成部分&#xff0c;平时我们给一些客户做堆垛机的维保&#xff0c;每次都会特地去检查堆垛机的钢丝绳&#xff0c;如果发现起毛刺&#xff0c;那必须得赶紧跟客户讲&#xff0c;让客户自己的维修人员不定期地观察&#xff0c;情况严重就要做…

CPU密集型和IO密集型对 CPU内核之间的关系

多线程如何合理的配置核心线程数&#xff1f; 对于 CPU 密集型任务&#xff0c;由于 CPU 密集型任务的性质&#xff0c;导致 CPU 的使用率很高&#xff0c;如果使用线程池中的核心线程数量过多&#xff0c;会增加上下文切换的次数&#xff0c;带来额外的开销。因此&#xff0c…