所以我有一個程序,應該根據輸入的信息來匹配保姆。雙方的所有信息都保存在鏈接列表中。是否可以將來自保姆鏈接列表的數據與父鏈接列表進行匹配?而且也使它輸出類似「__可能匹配你」在兩個不同的鏈接列表中匹配數據
回答
如果你沒有太多的數據,解決問題的簡單,但效率不高的方式是:
boolean matches(Person person, BabySitter babySitter) {
// implement a logic that returns whether babySitter and person match
return person.getNumberOfChildren() <= babySitter.getMaximumNumberOfChildren() &&
babySitter.getWorkingDays().containsAll(person.needsBabySitterForDays());
}
for (Person person: people) {
for (BabySitter babySitter: babySitters) {
if (matches(person, babySitter)) {
System.out.println("Babysitter " + babySitter + " is recommended to " + person);
}
}
}
上述算法需要O( b * p)時間,其中b =保姆人數,p =人數。所以對於大b和p來說,它很慢。
基於matches
的邏輯,您可以通過反向索引獲得接近O(b + p)的解。所以如果你有10,000個保姆和10,000個人,這個優化的解決方案會運行得非常快,而上面的算法需要幾秒鐘。
你應該在內部循環中加入一個'break'語句。一旦找到匹配項,就不需要繼續搜索。 – Barmar
@Barmar從OP中不清楚,預計是否有單個或多個建議。 –
這將是匹配的孩子數量和你需要的嬰兒坐在一週的日子你可以照顧的孩子的數量和一週的工作日數量 –
- 1. 匹配不同數據幀的兩列
- 2. 匹配來自兩個不同表的兩個不同的列
- 3. 連接兩個表由兩列,其中的數據類型不匹配
- 4. 匹配兩個不同表中的ID
- 5. TSQL鏈接數據分成匹配和不匹配的表
- 6. QlikView的:匹配兩個間接鏈接表中的列不起作用
- 7. 在兩個不同的表中創建新的數據框與兩個不同的表不匹配
- 8. 匹配兩個不同陣列中值
- 9. 匹配來自不同行數的兩個表的數據
- 10. 兩個表中的不匹配列
- 11. 在兩個列表中發現不同的匹配<string>
- 12. 在兩個不同的數據框中匹配的日期
- 13. R:匹配不同數據框中的兩列,輸出倍數
- 14. 從同一個表中選擇,其中兩列匹配,第三個不匹配
- 15. 在C#中使用不匹配的數據連接兩個DataTable
- 16. 最大匹配數。在兩個列表
- 17. 加入兩個表,其中數據在一列中匹配
- 18. 如果無數列表中的兩個值相同,則匹配
- 19. 匹配兩個不等長的列表
- 20. 加入兩個表時,在兩列中的值不匹配
- 21. 在兩列中匹配數據
- 22. 在兩個不同的數字上匹配int列
- 23. 提取值在兩個不同的列中匹配在R
- 24. 匹配兩個不同數據庫中的唯一ID
- 25. 比較來自2個不同表格的匹配列數據
- 26. 從兩個表中插入數據可能有匹配的列
- 27. 匹配兩個列表在Python與同一指數無
- 28. 將兩個不同類型的列表鏈接在一起
- 29. 從mysql中的兩個相同表中找到不匹配的數據
- 30. 根據列在兩個表中找到不匹配的數據並按行排列列數據
Java還是Javascript?他們不一樣,甚至是相關的。 – Barmar
它的Java我認爲它自動添加標籤或東西 –
這取決於你的意思是「匹配」。它也很大程度上取決於數據如何存儲在鏈接列表中。 – Daniel