求连续数组中唯一重复的元素

1.问题描述

例如:数组a={2,3,1,5,5,5,5,7,8,1},元素2、3、7、8各出现1次,1出现两次,5出现4次,则重复次数最多的元素为5.

2. 方法与思路

2.1 以空间换时间,索引法

定义一个数组int cnt[MAX],将其元素全部初始化为0。然后遍历数组a,执行cnt[a[i]]++操作。最后在cnt数组中找最大的数,对应的数即为重复次数最多的数。

代码示例如下:

//以空间换时间,索引法intMaxFreq_index(inta[],intn){inti,j;intmax= a[0];//求出最大值,以分配计数数组空间for(i =1; i < n; i++)if(a[i] >max)max= a[i];int*cnt = newint[max];for(i =0; i = cnt[max] )        {max= a[i];        }    }returnmax;}

2.2 map映射法

使用map键值对来记录元素的出现次数,键为元素,值为键对应出现的次数。时间复杂度为o(n)。

#include ...intMaxFreq_map(inta[],intn){mapmp;inti,maxfreqNum=0;for(i =0; i < n; i++)if( ++mp[a[i]] >= mp[0] )            maxfreqNum = a[i];returnmaxfreqNum;}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,594评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,031评论 0 2
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,090评论 0 15
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 5,252评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,255评论 18 399

友情链接更多精彩内容