给出:
a = ["thing1", "thing2", "thing3", "thing4", "thing5", "thing6"]
b = ["thing3", "thing4", "thing5"]
我正在寻找最有效的方法来获得此信息:
result #=> [0, 0, 1, 1, 1, 0]
必须有一种比O(n ^ 2)更好的方法。
a.map{|v| b.include?(v) ? 1 : 0}
答案 0 :(得分:4)
c = b.to_h{|e| [e, true]}
a.map{|e| c[e] ? 1 : 0}
答案 1 :(得分:4)
files=(file1 file2 file3 file4)
for ((i=0; i<${#files[@]}; ++i)); do
echo "${files[i]}:$(fgrep -vxc -f <(cat "${files[@]:0:i}" "${files[@]:i+1}") <(sort -u "${files[i]}"))"
done
集在后台使用散列来实现,因此集的查找在执行速度方面类似于散列查找。