给出2D数组,其中有2组数组,第一组未正确对齐,第一组中有一个空格,第一组应与第二组对齐。 2套的长度相同。但是在第一组中,直到第二组开始之前都有空列。
我们需要编写一种算法,该算法将删除第一组中不必要的空格。在给定的示例空间中,第1列到第8行之间有空格,如果有更多空白,则应基于此条件将其删除。约束是如果只有一个空格,我们不应该删除。
输入
[[,1,,2,,3,,4,],
[,1,,2,,3,,4,],
[,1,,2,,3,,4,],
[,1,,2,,3,,4,],
[,1,,2,,3,,4,],
[,1,,2,,3,,4,],
[,1,,2,,3,,4,],
[,1,,2,,3,,4,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,]
]
输出数组
[
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,]
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,],
[1,2,3,4,,,,,]
]
我写了不同的算法,但似乎没有任何效果。
一种算法是发送格式数组和输入数组。但这不能解决问题。
alignArray(arr1, arr2) {
let arr3 = [];
let arr4 = _.compact(arr2);
let count = 0;
_.map(arr1, function (num, index) {
if (_.isString(num) && !(_.isEmpty(num))) {
if (arr4[count])
arr3.push(arr4[count]);
else
arr3.push("");
count++;
} else {
arr3.push("");
}
});
return arr3;
}
边缘案例:
应该有一些与第一套相似的套。
[[,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,],
[1,2,3,4 ,,,,,], [1,2,3,4 ,,,,,], [1,2,3,4 ,,,,,], [1,2,3,4 ,,,,,], [1,2,3,4 ,,,,,], [1,2,3,4 ,,,,,], [1,2,3,4 ,,,,,], [1,2,3,4 ,,,,,], [1,2,3,4 ,,,,,],
[,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,], [,1,,2,,3,,4,] ]
答案 0 :(得分:1)
您可以先获取模式,为该模式构建一个过滤器模式,然后通过使用过滤器模式过滤值来映射数组。
例如,此数组包含三个不同的字符串,并且字符串的模式是拆分后的字符串的真实值,其中falsy(缺失值)为1或0。
#include <stdio.h> #include <stdlib.h> #include <errno.h> int main() { char array1[]="12", array2[]="98"; int l1, l2; char c; errno = 0; if ((sscanf(array1, "%d%c", &l1, &c) != 1) || errno){ printf("not (only) a valid int in '%s'\n", array1); return -1; } if ((sscanf(array2, "%d%c", &l2, &c) != 1) || errno) { printf("not (only) a valid int in '%s'\n", array2); return -1; } printf("%d + %d = %d\n", l1, l2, l1+l2); }
在获得具有模式和这些模式的计数的对象之后,通过查看模式计数与总计数之间的关系是否大于
pi@raspberrypi:/tmp $ gcc -pedantic -Wextra a1.c pi@raspberrypi:/tmp $ ./a.out 12 + 98 = 110
来添加过滤模式,然后将整个模式用于过滤或通过添加按列的真实值来构建新的过滤器模式。将检查此总和,并且如果与',1,,2,,3,x,4,' // 010101010 ',1,,2,,3,,4,' // 010101010 '1,2,3,4,,,,,' // 111100000
的关系大于0.1
,则此列将包含在过滤器模式中。对象
total
的结果如下:0.1
结果,所有列均由数组模式的过滤器模式过滤。
columns
{
111100000: {
count: 9,
filter: "111100000"
},
"010101110": {
count: 1,
filter: "010101010"
},
"010101010": {
count: 8,
filter: "010101010"
}
}