的一個陣列的值替換我有兩個陣列:從另一個陣列
array1 = [3, 4, 4, 5, 6, 7, 8, 8]
array2 = [4, 5, 8, 8]
我想刪除的array1
那些元素,這是在array2
發現,但僅在一個實例。結果數組,array3
,必須是這樣的:
array3 = [3, 4, 6, 7]
我想:
array3 = array1 - array2
,但結果並不理想:
array3 -> [3, 6, 7]
的一個陣列的值替換我有兩個陣列:從另一個陣列
array1 = [3, 4, 4, 5, 6, 7, 8, 8]
array2 = [4, 5, 8, 8]
我想刪除的array1
那些元素,這是在array2
發現,但僅在一個實例。結果數組,array3
,必須是這樣的:
array3 = [3, 4, 6, 7]
我想:
array3 = array1 - array2
,但結果並不理想:
array3 -> [3, 6, 7]
這可能不是做你想要什麼的最有效的方式,但它的工作原理:
array1 = [3, 4, 4, 5, 6, 7, 8, 8]
array2 = [4, 5, 8, 8]
array2.each do |item|
index = array1.index item
array1.delete_at index if index
end
非當務之急,是想說明其他方式做事。使用Facets(只是爲了方便獲取直方圖),我會寫這個。 O(N):
require 'facets'
array3 = array1.reduce([array2.frequency, []]) do |(h, output), x|
if h[x] && h[x] > 0
[h.update(x => h[x] - 1), output]
else
[h, output << x]
end
end[1]
#=> [3, 4, 6, 7]
爲了使片斷單純的功能,你會使用散列#合併/陣列#+而不是哈希#更新/陣列:< <,但由於它是將這些數據結構的性質效率非常低。
我已經編輯我的問題 – mahmud 2013-02-14 13:58:43