算法笔试模拟题精解之“最活跃的数”

简介: 根据题意,最终需要将n个点连通并达到最大边权,而边权为两个点的点权之和的一半,所以一个点加入连通图的最大边权就是和点权最大的点连通。

在线编程介绍

阿里云开发者社区在线编程产品,针对广大开发者学习、实践、面试、应聘、考试认证等打造的免费在线刷题神器。题库来自笔试模拟题、算法大赛模拟题等,界面整洁明了,操作简单,为用户营造专心答题的学习环境。点击链接开始体验:https://developer.aliyun.com/coding

本文为大家介绍其中的 第45题:最活跃的数 的题目解析,具体如下:

题目描述

题目等级:简单
知识点:数组

查看题目:最活跃的数
现有一个包含n个整数的序列(1<=n<=1e5),n个数分别是a1,a2,a3...an(0<=ai<=1e5),现在对于每个ai都有3种操作,一种是使ai+1,一种是使ai-1,还有一种是不变,问在对这n个数操作完后,出现次数最多的数的出现次数是多少。
输入序列中整数个数n,和n个整数[a1,a2,…,an]
输出一个数,表示在操作过后的出现次数最多的数的出现次数
示例1
输入:
8
[3,2,1,5,3,4,9,5]
输出:
5

解题方法

根据题意,每个数都有3种操作,一种是+1,一种是-1,还有一种是不变。操作过后出现次数最多的数设为n,则操作之前 n,n+1, n-1 三个数的出现次数应为最多。

因此可以这样做,将数组中每个数的出现次数通过 HashMap 进行统计,以数组中的数字作为 key,每个数字出现的次数作为 value。将数组中的数字存入 HashMap 中后,遍历 HashMap ,对于每一个 key ,统计key-1,key,key+1 的 value 之和,遍历完 HashMap 后,得到的最大 value 和就是答案。

时间复杂度:O(n)

空间复杂度:O(n)

看完之后是不是有了想法了呢,快来练练手吧>>查看题目:最活跃的数

720-150.png

相关文章
|
6月前
|
算法 搜索推荐 Java
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
60 0
|
6月前
|
编解码 算法 前端开发
往年 | 大疆雷达算法校招笔试题目解析
往年 | 大疆雷达算法校招笔试题目解析
482 1
|
算法
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
78 0
|
算法 网络协议
骚戴独家笔试---算法篇4
骚戴独家笔试---算法篇4
62 1
|
存储 算法
骚戴独家笔试---算法篇3
骚戴独家笔试---算法篇3
203 0
骚戴独家笔试---算法篇3
|
搜索推荐
7大排序算法-- 堆排 快速排序 --精解(下)
7大排序算法-- 堆排 快速排序 --精解(下)
84 0
|
搜索推荐
7大排序算法-- 堆排 快速排序 --精解(上)
7大排序算法-- 堆排 快速排序 --精解
52 0
|
搜索推荐 算法
7大排序算法-- 直接插入,希尔,冒泡,选择 --精解(下)
7大排序算法-- 直接插入,希尔,冒泡,选择 --精解(下)
130 0
|
存储 搜索推荐
7大排序算法-- 直接插入,希尔,冒泡,选择 --精解(上)
7大排序算法-- 直接插入,希尔,冒泡,选择 --精解
83 0
|
算法 Serverless 测试技术
骚戴独家笔试---算法篇5
骚戴独家笔试---算法篇5
56 0