【发布时间】:2021-02-04 19:48:19
【问题描述】:
我正在尝试创建一种算法,该算法可以从偶数 n 人中创建独特的配对。之后,它应该将这些对划分为 n-1 天。所以每一天,每个人都会遇到另一个人。对不应重复。该算法应该在每次运行时提供不同的解决方案。
例如 我的起始数组是 [1,2,3,4] - 这将转换为以下对:
[1,2],[1,3],[1,4],
[2,3],[2,4],
[3,4]
现在这些对需要像这样在 n-1 天之间拆分
day 1 [1,2] & [3,4]
day 2 [1,3] & [2,4]
day 3 [1,4] & [2,3]
感谢您的帮助!
更新
感谢我编写此解决方案的答案
fun createDates(userIds: List<Int>): List<DateEntity> {
val dates = ArrayList<DateEntity>()
val userCount = userIds.size
val days = userCount - 1
val half = userCount / 2
val mutableUsers = userIds.toMutableList()
for (day in 0 until days) {
val firstHalf = mutableUsers.slice(0 until half)
val secondHalf = mutableUsers.slice(half until userCount).reversed()
for (i in firstHalf.indices) {
dates.add(DateEntity(day, firstHalf[i], secondHalf[i]))
}
// rotating the array
mutableUsers.add(1, mutableUsers.removeLast())
}
return dates
}
【问题讨论】:
-
你可以在这里找到答案:stackoverflow.com/a/65911162/5237560
标签: java python algorithm kotlin logic