问题: 找出数组中重复次数最多的元素并打印
程序实现:
/**
* Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)
* All rights reserved.
* Author: Jarg Yee <yeshaoting@gmail.com>
* http://jarg.iteye.com/
*/
import java.util.*;
import java.util.Map.*;
/*
* 找出数组中重复次数最多的元素并打印
* ---------------------------------------------------------------------
* 1. 排序原始数组,采用二个变量记录相邻值不同的元素值,
* 二个变量记录相邻值不同的元素值出现次数
* 保留元素值出现次数多的那个,继续在原始数组中搜寻
* ---------------------------------------------------------------------
* 2. 定义一个数据结构,包含数组元素值和其出现次数
* 遍历数组,若数组元素不存在于该数据结构中,则添加并设置出现次数为1;
* 否则,修改该数据结构元素出现次数,次数+1
* 最后,遍历该数据结构,找出出现次数最多的元素.
*/
public class MostNum
{
/** for debugging. */
public static void main(String[] args)
{
int[] arr = {7,3,1,4,3,6,2,8,3,2,2,2,3,4,2};
if(arr.length==0)
{
System.out.println("等查找的数组为空.");
return;
}
method1(arr.clone());
method2(arr);
}
//method 1
public static void method1(int[] arr)
{
Arrays.sort(arr); //升序
//value,value_new值-1,为了使程序进入"不同元素值过渡"
int count=0, value=arr[0]-1; //保存最优元素信息
int count_new=0, value_new=arr[0]-1; //保存新搜寻元素信息
for(int i=0; i<arr.length; i++)
{
//连续相同的元素值
if(arr[i]==value_new)
{
count_new++;
}
//不同元素值过渡或者扫描到数组末尾
if(arr[i]!=value_new || i == arr.length-1)
{
//若新的元素值计数大于目前最优元素值计数时,更新
if(count_new>count)
{
count = count_new;
value = value_new;
}
//新的元素值
value_new = arr[i];
count_new = 1;
}
}
display(value, count);
}
//method 2
public static void method2(int[] arr)
{
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
//遍历数组,记录相同数组值出现次数并存储在数据结构中
for(int i=0; i<arr.length; i++)
{
if(map.containsKey(arr[i]))
map.put(arr[i], map.get(arr[i])+1);
else
map.put(arr[i], 1);
}
//遍历数据结构,找出出现次数最多的元素.
Set<Entry<Integer,Integer>> set = map.entrySet();
Iterator<Entry<Integer,Integer>> it = set.iterator();
boolean flag = true; //判断是否第一次迭代
int key = 0, value = 0;
while(it.hasNext())
{
Entry<Integer,Integer> e = it.next();
//第一次遍历数据结构,先初始化key,value
if(flag)
{
key = e.getKey();
value = e.getValue();
flag = false;
continue;
}
//当前元素出现次数大于当前最优值的情况
if(e.getValue()>value)
{
key = e.getKey();
value = e.getValue();
}
}
display(key, value);
}
//显示结果
public static void display(int key, int value)
{
System.out.println("重复次数最多元素:" + key + "\t重复次数:" + value);
}
}
分享到:
相关推荐
在处理数组数据时,经常会遇到需要找出数组中重复元素的情况。特别是在数据分析、日志文件处理或者统计用户行为时,我们可能需要找出数组中出现频率最高的元素。 为了解决这个问题,PHP提供了一些内置函数来帮助...
有时候我们需要找出列表中出现次数最多的元素,这样的需求在数据统计、数据分析等领域非常实用。本文将详细介绍如何通过Python代码实现这一功能,并提供一个示例程序。 #### 知识点详解 1. **函数定义**: 在Python...
在JavaScript编程中,有时我们需要找出数组中重复出现的元素。这个任务可以通过编写一个函数来实现,该函数遍历数组并使用对象(哈希表)来跟踪每个元素出现的次数。以下是一个具体的实例,展示了如何使用JavaScript...
在给定的例子中,目标是找出数值数组中出现频率最多的10个数字。下面将详细解释如何使用PHP实现这一功能。 首先,我们创建一个包含随机整数的数组。这通常通过循环和`rand()`函数来完成,如以下代码所示: ```php ...
2. **找出数组中重复次数最多的数** 第二个程序是寻找整型数组中出现次数最多的元素。首先,它创建了两个新的数组ary2和ary3,分别用来存储不重复的元素和它们的出现次数。同样使用了两层嵌套循环,但这次是在查找...
- 在`max()`函数中,通过比较数组中的每个元素与当前最大值`max`,找出数组的最大值。 - `paixu()`函数实现了冒泡排序,对数组进行升序排列。 - `sushu()`函数用于检测数组中的素数,即不能被2到自身的一半之间...
10. **数组中重复出现多次的数**:找出数组中重复出现多次的数字,可以使用哈希表统计次数,找出计数大于1的元素。 11. **和为S的两个数字**:给定一个整数数组和目标和S,找出数组中和为目标和的两个数,可以使用...
41. 如何找出数组中唯一的重复元素。 知识点:数组排序算法,使用JavaScript实现数组排序。 42. 如何查找数组中元素的最大值和最小值。 知识点:数组元素统计算法,使用JavaScript实现数组元素统计。 搜索部分 43...
leetcode数组中元素出现次数面试准备 LEETCODE 问题 二和 最小尺寸子阵列总和 两个有序数组的中位数 反转整数 盛水最多的容器 有效括号 从排序数组中删除重复项 删除元素 下一个排列 在旋转排序数组中搜索 搜索插入...
找出数组中重复的数字 删除排序数组中的重复项,在原数组上操作 有序数组两数之和 移除数组中所有值为val的元素 调整数组顺序使奇数位于偶数前面 数组中出现次数超过一半的数字 最小的k个数 数组中的第K个最大元素 ...
实验题7-4:定义一个包含五个元素的一维数组,从键盘接收用户输入的值,然后打印出数组。需要使用循环语句读取用户输入并存储到数组中,再遍历数组输出。 实验题7-5:对整型数组进行降序排序。可以使用选择排序或...
代码中包含一个名为`Maxval`的函数,用于找出数组中最大连续出现的相同值。这个函数首先初始化几个变量,然后遍历数组,使用一个计数器来跟踪当前元素与下一个元素是否相等。当遇到不同的元素时,它会更新最大连续值...
5、在控制台中打印输出 半径为 * 的圆的周长是 * 半径为 * 的圆的面积是 * 笔记本名称:ThinkPad E460 笔记本价格:3000 笔记本库存:100台 1、运算符 1、位运算符 1、作用 将数字转换为二进制后...
49. 数组中重复的数字:找出数组中的重复数字。 50. 构建乘积数组:给定一个数组,构建乘积数组,其中每个元素是原数组中除了它自己的其他所有元素的乘积。 51. 正则表达式匹配:实现一个函数来判断一个字符串是否...
无论是哪种方法,它们都能有效地解决题目中的问题,即找出并统计一个未知长度字符串中出现次数最多的字符。在实际开发中,选择哪种方法取决于代码的可读性、效率需求以及项目上下文。对于较小的字符串,两者性能差异...
1. **数组中出现次数超过一半的数字**:这道题目要求找出数组中出现次数超过一半的元素,常见解法是摩尔投票法。Python实现中,可以使用两个变量交替记录最大值和出现次数,最终得到的即为目标元素。 2. **两个数组...
数组中的重复数字**:找出数组中重复的数字,可以使用哈希表记录出现过的数字。 - **51.构建乘积数组**:生成新数组,其中每个元素是原数组中对应索引处的两个元素的乘积。 这些题目涵盖了数组操作的基本技巧,...
- 找出数组中只出现一次的数字的进阶版。 - **SingleNumberIII** - 找出数组中只出现一次的两个数字。 - **O1CheckPowerof2** - 检查一个数是否为2的幂。 - **ConvertIntegerAtoIntegerB** - 转换两个整数。 - *...
- **排序法**:先对数据进行排序,然后遍历排序后的数组,比较相邻元素的重复次数,找到出现次数最多的那个。 4. **输出结果**:一旦找到众数,将其打印出来或写入文件。在这个案例中,执行文件"众数.exe"很可能是...
最后,可以遍历映射,找出计数大于1的元素,即为重复的数字。 6. **输出**:最后,将排序结果和重复元素的统计信息打印出来。可以使用`std::cout`来实现这一目标。 以下是一个简单的代码框架来解决这个问题: ```...