如何找到最长的公共子数组 [英] how to find longest common subarray

查看:56
本文介绍了如何找到最长的公共子数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的问题:我在javascript中有5个这样的整数数组:

here is my problem: I have 5 arrays of integer like these in javascript:

array1 = [0, 1, 2, 3, 4];
array2 = [9, 1, 2, 3, 4];
array3 = [10, 1, 2, 11, 4];
array4 = [12, 1, 2, 13, 4];
array5 = [14, 1, 2, 15, 4];

我必须找到最长的公共子数组。在这种情况下,我必须检索这样的数组: [1、2、4]

I have to found the longest common subarray. In this case I have to retrieve an array like this: [1, 2, 4].

对于记录,我不会在数组内发现重复,我的主要目标不是执行速度。

For the records, I won't find repetitions inside arrays and my main goal is not execution speed.

谢谢

推荐答案

尝试一下:

var array1 = [0, 1, 2, 3, 4];
var array2 = [9, 1, 2, 3, 4];
var array3 = [10, 1, 2, 11, 4];
var array4 = [12, 1, 2, 13, 4];
var array5 = [14, 1, 2, 15, 4];

// join everything into one array
var all = array1.join(',')+','+array2.join(',')+','+array3.join(',')+','+array4.join(',')+','+array5.join(',');
all = all.split(',');

// get an object with all unique numbers as keys
var keys = {};
for(var i=0; i<all.length; i++) keys[all[i]] = 1;
console.log(keys);

// generate an array with values present in all arrays
var common = [];
for(var x in keys) {
  if(array1.indexOf(parseInt(x)) != -1 && array2.indexOf(parseInt(x)) != -1 && array3.indexOf(parseInt(x)) != -1 && array4.indexOf(parseInt(x)) != -1 && array5.indexOf(parseInt(x)) != -1) {
    common.push(x);
  }
}
console.log(common);

这篇关于如何找到最长的公共子数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆