/*1 2 3
2 1 3
2 3 1 */
var arr = [
[1,2,3],
[2,1,3],
[2,3,1]
]
function commonElementInColumn(arr){
var a = arr[0],
b=false,
commItem =[];
for(var i=0 ; i<a.length ;i ++){
var item = a[i];
for(j=1; j< arr.length ; j++){
if(arr[j].indexOf(item) !==-1){
b =true
}else {
b= false
}
}
if(b){
commItem.push(item)
}
}
return commItem
}
console.log(commonElementInColumn(arr))
我正在尝试在矩阵中找到常见的column
项。我试过这样。但没有得到预期的输出。我得到[1,2,3]
但是
我们可以添加任何在列中找到共同元素的逻辑
预期输出 [1]
我想要m x n
矩阵。我想找到所有coloum中存在的共同元素。
参见输入
/*1 2 3
2 1 3
2 3 1 */
1
出现在所有三栏中。
2
仅在third
3
出现在第二个和第三个,但不是第一个答案 0 :(得分:0)
尝试以下
var arr = [
[1,2,3], [2,1,3], [2,3,1]
];
// Create the map of items with value to be an array of indexes
var map = {};
var result = [];
// iterate over the array
arr.forEach(function(subArray){
subArray.forEach(function(item, index){
map[item] = map[item] ? map[item] : [];
// if the map has the item and the index already exists in the array, skip
if(!map[item].includes(index)) {
map[item].push(index);
}
// if the length is same as the array item length (assuming same for all subArray's) then it means all indexes have been covered
if(map[item].length === arr[0].length) {
result.push(item);
}
});
});
console.log(result);
答案 1 :(得分:0)
略有不同的方法,值为Map
,每个值收集索引Set
。稍后检查集合的大小,并将地图的键作为结果arrray。
function commonCol(array) {
var map = new Map;
array.forEach(a => a.forEach((v, i) => {
if (!map.has(v)) {
map.set(v, new Set);
}
map.get(v).add(i);
}));
return Array
.from(map.entries())
.filter(({ 1: v }) => v.size === array[0].length)
.map(([k]) => k);
}
var array = [[1, 2, 3], [2, 1, 3], [2, 3, 1]];
console.log(commonCol(array));
&#13;
答案 2 :(得分:0)
在第一个子阵列上使用Array#filter(),因为它必须包含任何常用值。
在该过滤器中,使用Set将每个数字的所有索引传递给。由于Set必须具有唯一值,因此您可以检查它size
,如果它与子阵列长度匹配,则所有索引都是唯一的
var arr = [
[1, 2, 3],
[2, 1, 3],
[2, 3, 1]
]
function commonElementInColumn(arr) {
// return filtered results from first subarray since it has to contain any common values `
return arr[0].filter((num) => {
// get all indices for this number as array
let indices = arr.map(subArr => subArr.indexOf(num));
//create a set from this array which will void duplicates
let uniqueIndices = new Set(indices);
// if size of set is same as subarray length then all indices for this number are unique
return uniqueIndices.size === arr[0].length;
});
}
console.log(commonElementInColumn(arr))
&#13;
答案 3 :(得分:0)
看一下:
module rca_dataflow_tb(
reg [3:0] a,
reg [3:0] b,
reg cin,
reg [3:0] s,
reg cout
);
rca_dataflow uut(.a(a),.b(b),.cin(cin),.s(s),.cout(cout));
initial
begin
#20
a = 4'b0;
b = 4'b0;
cin = 1'b0;
#20
if (s == 4'b0000 & cout == 1'b0)
$display("Test Passed")
else
$display("Test Failed")
end
#20
a = 4'b0010;
b = 4'b0000;
cin = 1'b0;
#20
if (s == 4'b0010 & cout == 1'b0)
$display("Test Passed")
else
$display("Test Failed")
end
end
endmodule
&#13;