objectSubsets{ defmain(args: Array[String]): Unit = { println(subsets(Array(1, 2, 3))) }
defsubsets(nums: Array[Int]): List[List[Int]] = { val res = newListBuffer[List[Int]]() for (i <- 0 to nums.length) { val selected = newListBuffer[Int]() getPermutation(nums.toList, selected, res, 0, i) } res.toList }
//回溯算法 defgetPermutation(nums: List[Int], selected: ListBuffer[Int], res: ListBuffer[List[Int]], index: Int, k: Int): Unit = { if (selected.length == k) { res += (selected.toList) return }
for (i <- index until nums.length) { selected += nums(i) getPermutation(nums, selected, res, i + 1, k) selected -= nums(i) } } }