`
yeshaoting
  • 浏览: 686024 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

找出数组中重复次数最多的元素并打印

    博客分类:
  • J2SE
阅读更多


 

问题: 找出数组中重复次数最多的元素并打印


 

程序实现:

 

 

/**
 * 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获取数组中重复最多的元素的实现方法

    在处理数组数据时,经常会遇到需要找出数组中重复元素的情况。特别是在数据分析、日志文件处理或者统计用户行为时,我们可能需要找出数组中出现频率最高的元素。 为了解决这个问题,PHP提供了一些内置函数来帮助...

    python 实现返回一个列表中出现次数最多的元素方法

    有时候我们需要找出列表中出现次数最多的元素,这样的需求在数据统计、数据分析等领域非常实用。本文将详细介绍如何通过Python代码实现这一功能,并提供一个示例程序。 #### 知识点详解 1. **函数定义**: 在Python...

    用JS编写一个函数,返回数组中重复出现过的元素(实例)

    在JavaScript编程中,有时我们需要找出数组中重复出现的元素。这个任务可以通过编写一个函数来实现,该函数遍历数组并使用对象(哈希表)来跟踪每个元素出现的次数。以下是一个具体的实例,展示了如何使用JavaScript...

    PHP统计数值数组中出现频率最多的10个数字的方法

    在给定的例子中,目标是找出数值数组中出现频率最多的10个数字。下面将详细解释如何使用PHP实现这一功能。 首先,我们创建一个包含随机整数的数组。这通常通过循环和`rand()`函数来完成,如以下代码所示: ```php ...

    JAVA和ANDROID一些小程序[定义].pdf

    2. **找出数组中重复次数最多的数** 第二个程序是寻找整型数组中出现次数最多的元素。首先,它创建了两个新的数组ary2和ary3,分别用来存储不重复的元素和它们的出现次数。同样使用了两层嵌套循环,但这次是在查找...

    数组求和,素数,排序算法

    - 在`max()`函数中,通过比较数组中的每个元素与当前最大值`max`,找出数组的最大值。 - `paixu()`函数实现了冒泡排序,对数组进行升序排列。 - `sushu()`函数用于检测数组中的素数,即不能被2到自身的一半之间...

    《算法最优解(第一版)》剑指Offer题解校招求职刷题必备.docx

    10. **数组中重复出现多次的数**:找出数组中重复出现多次的数字,可以使用哈希表统计次数,找出计数大于1的元素。 11. **和为S的两个数字**:给定一个整数数组和目标和S,找出数组中和为目标和的两个数,可以使用...

    前端大厂最新面试题-algorithm.docx

    41. 如何找出数组中唯一的重复元素。 知识点:数组排序算法,使用JavaScript实现数组排序。 42. 如何查找数组中元素的最大值和最小值。 知识点:数组元素统计算法,使用JavaScript实现数组元素统计。 搜索部分 43...

    leetcode数组中元素出现次数-Interview-Prepration:包含重要问题和面试概念的存储库

    leetcode数组中元素出现次数面试准备 LEETCODE 问题 二和 最小尺寸子阵列总和 两个有序数组的中位数 反转整数 盛水最多的容器 有效括号 从排序数组中删除重复项 删除元素 下一个排列 在旋转排序数组中搜索 搜索插入...

    leetcode数组下标大于间距-my-algorithm:我的算法

    找出数组中重复的数字 删除排序数组中的重复项,在原数组上操作 有序数组两数之和 移除数组中所有值为val的元素 调整数组顺序使奇数位于偶数前面 数组中出现次数超过一半的数字 最小的k个数 数组中的第K个最大元素 ...

    7-8次C语言上机作业.docx

    实验题7-4:定义一个包含五个元素的一维数组,从键盘接收用户输入的值,然后打印出数组。需要使用循环语句读取用户输入并存储到数组中,再遍历数组输出。 实验题7-5:对整型数组进行降序排序。可以使用选择排序或...

    排序程序文档

    代码中包含一个名为`Maxval`的函数,用于找出数组中最大连续出现的相同值。这个函数首先初始化几个变量,然后遍历数组,使用一个计数器来跟踪当前元素与下一个元素是否相等。当遇到不同的元素时,它会更新最大连续值...

    javascript入门笔记

    5、在控制台中打印输出 半径为 * 的圆的周长是 * 半径为 * 的圆的面积是 * 笔记本名称:ThinkPad E460 笔记本价格:3000 笔记本库存:100台 1、运算符 1、位运算符 1、作用 将数字转换为二进制后...

    剑指offer(牛客网)

    49. 数组中重复的数字:找出数组中的重复数字。 50. 构建乘积数组:给定一个数组,构建乘积数组,其中每个元素是原数组中除了它自己的其他所有元素的乘积。 51. 正则表达式匹配:实现一个函数来判断一个字符串是否...

    php中计算未知长度的字符串哪个字符出现的次数最多的代码

    无论是哪种方法,它们都能有效地解决题目中的问题,即找出并统计一个未知长度字符串中出现次数最多的字符。在实际开发中,选择哪种方法取决于代码的可读性、效率需求以及项目上下文。对于较小的字符串,两者性能差异...

    剑指offer前10题python代码

    1. **数组中出现次数超过一半的数字**:这道题目要求找出数组中出现次数超过一半的元素,常见解法是摩尔投票法。Python实现中,可以使用两个变量交替记录最大值和出现次数,最终得到的即为目标元素。 2. **两个数组...

    (一)剑指offer—Python版—数组篇

    数组中的重复数字**:找出数组中重复的数字,可以使用哈希表记录出现过的数字。 - **51.构建乘积数组**:生成新数组,其中每个元素是原数组中对应索引处的两个元素的乘积。 这些题目涵盖了数组操作的基本技巧,...

    数据结构与算法题解

    - 找出数组中只出现一次的数字的进阶版。 - **SingleNumberIII** - 找出数组中只出现一次的两个数字。 - **O1CheckPowerof2** - 检查一个数是否为2的幂。 - **ConvertIntegerAtoIntegerB** - 转换两个整数。 - *...

    zhongshu.doc.rar_doc

    - **排序法**:先对数据进行排序,然后遍历排序后的数组,比较相邻元素的重复次数,找到出现次数最多的那个。 4. **输出结果**:一旦找到众数,将其打印出来或写入文件。在这个案例中,执行文件"众数.exe"很可能是...

    C++将一串带空格的数字字符串排序并统计重复元素输出

    最后,可以遍历映射,找出计数大于1的元素,即为重复的数字。 6. **输出**:最后,将排序结果和重复元素的统计信息打印出来。可以使用`std::cout`来实现这一目标。 以下是一个简单的代码框架来解决这个问题: ```...

Global site tag (gtag.js) - Google Analytics