n个数字,求组合数量和各个组合内容,包含元素相同的去重(kotlin)

258 阅读1分钟

前言

本来在进行开开心心的工作(摸鱼),同事说,你很无聊吗?无聊我给你找个事情做啊。 我 : 在这里插入图片描述 好啊好啊!


一、问题

在这里插入图片描述 看到去重之前,是不是瞧不起人嘛,太简单了嘛。 在这里插入图片描述

看到去重后,是不是太瞧得起我了嘛,这谁做得来嘛。

在这里插入图片描述

二、解决问题

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辅助学习写代码真的挺有用的!

在这里插入图片描述