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

文章目录

  • 前言
  • 一、问题
  • 二、解决问题
    • 1.去重前
    • 2.去重后
  • 总结


前言

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


一、问题

n个数字,求组合数量和各个组合内容,包含元素相同的去重(kotlin)_第1张图片
看到去重之前,是不是瞧不起人嘛,太简单了嘛。
n个数字,求组合数量和各个组合内容,包含元素相同的去重(kotlin)_第2张图片

看到去重后,是不是太瞧得起我了嘛,这谁做得来嘛。
n个数字,求组合数量和各个组合内容,包含元素相同的去重(kotlin)_第3张图片

二、解决问题

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简直就是俺的神让我们看看源码
n个数字,求组合数量和各个组合内容,包含元素相同的去重(kotlin)_第4张图片
妈妈再也不用担心我的学习!


总结

最后来个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()
 }

输出
n个数字,求组合数量和各个组合内容,包含元素相同的去重(kotlin)_第5张图片
真不错呢,chatgpt辅助学习写代码真的挺有用的!
n个数字,求组合数量和各个组合内容,包含元素相同的去重(kotlin)_第6张图片

你可能感兴趣的:(kotlin,android,开发语言)