所以這是我的問題的一個更簡單的形式。 可以說我有2個數組。 A = {1,2}和B = {2,4,6}。 如果A和B共享一個元素,然後從B中刪除該元素。 我知道你可以循環遍歷並將A中的每個元素與B中的每個元素進行比較,但是必須有更好的方法!如何判斷2個數組是否共享相同的元素
2
A
回答
4
如果您的數組已排序(或者您可以對數組進行排序),則可以同時處理兩個數組。在兩個數組開頭開始,下去,直到你將推動超出其各自陣列結束的指針之一:
- 如果< B,則推進指針
- 如果A = B,然後刪除在b處
- 元素如果> b,則提前在b指針
0
不,我不覺得。你必須循環。
0
如果數組中值是它的陣獨特的,你可以使數組索引的實際值,讓您直接尋求它的索引,而不是掃描整個陣列。
從擁有較少元素的數組開始,我假設你想要做excel/VB?我拍了一張照片來說明這個想法。
http://img694.imageshack.us/img694/1503/hackmap.jpg
不是有兩個嵌套的循環,你有一個循環,它只是迭代的次數爲最小的數組。
2
你必須編寫代碼,但它不一定是一個蠻力的雙重嵌套循環,你不必從數組中做任何雜亂的移除單個元素。
如果您添加對Microsoft腳本運行時的引用(來自VBE中的「工具」菜單),則可以使用Dictionary對象來簡化操作。它有'存在','刪除'和'鑰匙'的方法。因此,您可以循環遍歷B,並在Dictionary中添加元素作爲鍵,然後循環遍歷A,檢查這些元素是否存在,如果是,則刪除它們。
作爲僞代碼:
for each elem in b
dict(elem)=0
next elem
for each elem in a
if dict.exists(elem)
dict.remove(elem)
end if
next elem
return dict.keys
上述方法也從乙刪除重複,如果有任何。
如果您知道您的數組沒有錯誤值作爲元素,您還可以使用MATCH(以及VBA'Application.Match'或'Application.WorksheetFunction.Match')。做類似
=MATCH({2,4,6},{1,2},0)
將返回{2,#N/A,#N/A}。與#N/A任何位置是B的一個元件,這不是在A.如果在工作表中執行匹配,則可以將一個式等
=IF(ISNA(cell of match),corresponding cell of B,NA())
,然後過濾出的位置處的#不適用於此。在VBA中,你可以(更僞代碼):
matches=application.match(b,a,0)
for each elem in matches
if iserror(elem)
add corresponding element of b to result
end
next elem
redim result to new smaller size
return result
當然,那麼你不必擔心數組的起始界限等。
相關問題
- 1. 如何判斷2個瀏覽器窗口是否共享會話?
- 2. C#,如何判斷數組的第一個元素是否爲null,何時數組可能沒有元素?
- 3. 如何判斷一個元素是否是jquery-ui小部件?
- 4. Python Rubiks Cube如何判斷2個狀態是否相等
- 5. Twilio-video:如何判斷一個軌道是否是一個屏幕共享?
- 6. 如何判斷一個元素是否存在角度?
- 7. Javascript如何判斷兩個對象是否相同?
- 8. 如何判斷兩個字體在GDI中是否相同+
- 9. 如何判斷兩個主題是否相同?
- 10. 如何讓2個元素在CSS中共享相同的翻轉狀態?
- 11. 確定2個Excel文檔是否共享相同的結構
- 12. 檢查2個數組是否至少有一個共同的元素?
- 13. 如何判斷元素是否位於DOM中的另一個元素之前
- 14. 如何判斷對象是否有某個元素的子元素?
- 15. 如何檢查一個數組的元素是否相同的JavaScript(超過2個元素)
- 16. 如何判斷一個JSON對象是否是一個數組?
- 17. 如何判斷數組中的項目是否也是數組?
- 18. 如何判斷nginx是否緩存(共享)最大年齡的響應,公共?
- 19. 如何測試兩個數組是否共享相同的內存塊?
- 20. 如何判斷一個元素是否是JavaScript中另一個元素的子元素(沒有jQuery)?
- 21. 如何判斷元素是否是javascript/jquery中父元素的最後一個或第一個子元素?
- 22. 靜態解析:判斷兩個Javascript函數是否相同
- 23. 相同DOM元素上的角度指令是否共享一個範圍?
- 24. 如何判斷Ember視圖的元素是否在文檔中?
- 25. 如何判斷jQuery元素的背景是否透明?
- 26. 如何判斷我的元素是否需要innerHTML或值
- 27. 比較兩個數組,兩個數組之間是否有共同的元素?
- 28. 看看2個數組是否包含相同的元素(swift 2.0)
- 29. 如何檢查數組元素是否相同
- 30. 判斷一個元素是否在列表中的另一個元素之後
嘿,所以我開始玩弄字典對象,我不知道vba可以使用它們。這是迄今爲止最酷的解決方案;但是,我在辦公室工作,讓每個人都啓用「Microsoft Scripting Runtime」是不切實際的。只是想認出你的答案,即使我沒有選擇它作爲我選擇的答案 – Ommit 2010-06-18 14:59:58
無論什麼作品! FWIW,我認爲如果你的同事打開一個你創建的具有參考集的Excel文件,那麼它將工作得很好,而不必做任何事情。腳本運行時在Windows中幾乎總是存在,沒有做任何特別的事情。 – jtolle 2010-06-18 19:58:42