前言
本来在进行开开心心的工作(摸鱼),同事说,你很无聊吗?无聊我给你找个事情做啊。
我 :
好啊好啊!
一、问题
看到去重之前,是不是瞧不起人嘛,太简单了嘛。
看到去重后,是不是太瞧得起我了嘛,这谁做得来嘛。
二、解决问题
1.去重前
先把没去重的写出来
fun generateCombinations(numbers: List<Int>): List<List<Int>> {
val combinations = mutableListOf<List<Int>>()
for (i in 0 until numbers.size) {
val combination = mutableListOf<Int>()
combination.add(numbers[i])
combinations.add(combination)
for (j in i + 1 until numbers.size) {
combination.add(numbers[j])
combinations.add(combination.toList())
}
}
return combinations
}
双重for循环遍历所有可能性,没什么好说的啊
2.去重后
我做不来(狗头),那怎么办呢,我可不是摆烂的人啊!那问题又来了,那怎么办呢?!chatgpt!!!
fun generateCombinations(numbers: List<Int>): List<List<Int>> {
val combinations = mutableListOf<List<Int>>()
for (i in 0 until numbers.size) {
val combination = mutableListOf<Int>()
combination.add(numbers[i])
combinations.add(combination)
for (j in i + 1 until numbers.size) {
combination.add(numbers[j])
combinations.add(combination.toList())
}
}
return combinations.distinct()
}
没错,你没有看错只多了一个distinct函数,chatgpt简直就是俺的神让我们看看源码
妈妈再也不用担心我的学习!
总结
最后来个1到256的list测试一下
fun SummationAnddeDuplication() {
val long = System.currentTimeMillis()
val numbers = mutableListOf<Int>()
for (i in 1..256){
numbers.add(i)
}
val combinations = generateCombinations(numbers)
println("Combinations:")
combinations.forEach { println(it) }
val long1 = System.currentTimeMillis()-long
println("Number of combinations: ${combinations.size}" +" time : ${long1/1000}s" )
}
fun generateCombinations(numbers: List<Int>): List<List<Int>> {
val combinations = mutableListOf<List<Int>>()
for (i in 0 until numbers.size) {
val combination = mutableListOf<Int>()
combination.add(numbers[i])
combinations.add(combination)
for (j in i + 1 until numbers.size) {
combination.add(numbers[j])
combinations.add(combination.toList())
}
}
return combinations.distinct()
}
输出
真不错呢,chatgpt辅助学习写代码真的挺有用的!