找出两个数组中都有,并且重复次数最多的元素

var itemA = [1, 2, 3, 3]
var itemB = [3, 3, 2]
var crossArr = [];
var countArr = [];

itemA.forEach((e) => {
    if (itemB.includes(e)) {
        !crossArr.includes(e) && crossArr.push(e);
    }
})

function count(item, total = 0, index = 0, arr = itemA.concat(itemB)) {
    if (arr.indexOf(item, index) >= 0) {
        total++;
        index = arr.indexOf(item, index) + 1;
        return count(item, total, index)
    }
    return total;
}

countArr = crossArr.map(e => {
    return count(e)
})
var maxCount = Math.max(...countArr);
var maxCountIndex = countArr.indexOf(maxCount)
var maxValue = crossArr[maxCountIndex]

console.log(`${maxValue}重复最多次,共${maxCount}次`)

原文地址:https://www.cnblogs.com/NKnife/p/9253289.html

时间: 2024-10-08 08:00:36

找出两个数组中都有,并且重复次数最多的元素的相关文章

找出两个数组的相同元素,最优算法?

在做新旧接口交替过程中,遇到了老接口和新接口json数据有些不一致的情况,需要比较两个json对象,把相同的元素赋其中一个json对象中变量的值.而且其中一个json最后输出格式还需要改变下属性名,思来想去觉得和"找出两个数组相同元素"很像,所以做下总结. "有一个数组A{0,2,3,5}和一个数组B{3,5,6,2,1,1},找出这两个数组相同元素." 一开始抽象出这道题时,脑海里浮现出最简单粗暴的方法,逐一比较. //最简单粗暴的做法,逐个比较,时间复杂度为(B

找出两个数组相同的元素

题目:找出两个数组(有重)相同的元素,两种方法 public class 出两个数组相同的元素 { public static void main(String[] args) { // TODO Auto-generated method stub String[] test1 = {"damon","happy","ly","good","losers"}; String[] test2 = {&quo

找出两个数组相同的元素,并且对应的个数一样

/** * 找出两个数组相同的元素,并且对应的个数一样 * @param args */ public static void getSameNumberCount(String[] a, String[] b) { Map<String, Integer> map = new HashMap<String, Integer>(); for (int i = 0; i < a.length; i++) { if (!map.containsKey(a[i])) { map.p

求数组中重复次数最多的元素

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数组中找最大的数,对应的数即为重复次数最多的数. 代码示例如下: //以空间换时间,索引法 int MaxFreq_index(int a[],int n) { int i,j

leetcode 4 : Median of Two Sorted Arrays 找出两个数组的中位数

题目: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)). 题意: 两个排序后的数组nums1 和nums2,长度分别是m,n,找出其中位数,并且时间复杂度:O(log(m+n)) 最愚蠢的方法: 两个数组合

用javascript编写(找出两个数组中的差异元素并存入一个新的数组,假设每个数组内部都没有重复元素)。

onload = function(){                var a = [2,5,7,9];                var b = [3,4,5,7,8];                                //先准备一个函数,用来检查一个数组中是否包含某个数据,是就返回true,不包含就返回false                //再循环任意一个数组(这里就选a),把该数组中的每一个元素都去b数组中检查,没有就属于差异元素,就存入新的数组        

Java实现找出数组中重复次数最多的元素以及个数

/**数组中元素重复最多的数 * @param array * @author shaobn * @param array */ public static void getMethod_4(int[] array){ Map<Integer, Integer> map = new HashMap<>(); int count = 0; int count_2 = 0; int temp = 0; for(int i=0;i<array.length;i=i+count){

程序员面试题目总结--数组(三)【旋转数组的最小数字、旋转数组中查找指定数、两个排序数组所有元素中间值、数组中重复次数最多的数、数组中出现次数超过一半的数】

转!http://blog.csdn.net/dabusideqiang/article/details/38271661 11.求旋转数组的最小数字 题目:输入一个排好序的数组的一个旋转,输出旋转数组的最小元素. 分析:数组的旋转:把一个数组最开始的若干个元素搬到数组的末尾.例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1.这道题最直观的解法并不难.从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N).但这个思路没有利用输入数组

[算法学习]给定一个整型数组,找出两个整数为指定整数的和(3)

问题描述: 设计一个类,包含如下两个成员函数: Save(int input) 插入一个整数到一个整数集合里. Test(int target) 检查是否存在两个数和为输入值.如果存在着两个数,则返回true,否则返回false 允许整数集合中存在相同值的元素 分析: 与[算法学习]给定一个整型数组,找出两个整数为指定整数的和(2)不同,这里需要算出的是存不存在这两个数,可以在上一篇的基础上修改一下数据结构,HashMap其中key是数值,value是数值个数,然后需要作两步判断,map中存在数