子集生成算法时间复杂度分析 - O(2^n * n)
class Solution {\n var t = Int\n var ans = [Int]\n func subsets(_ nums: [Int]) -> [[Int]] {\n let n = nums.count\n for mask in 0..<1 << n {\n t.removeAll()\n for i in 0..<n {\n if mask & 1 << i != 0 {\n t.append(nums[i])\n }\n }\n ans.append(t)\n }\n return ans\n }\n}//分析其时间复杂度内容:该函数的时间复杂度是O(2^n * n),其中n是数组nums的长度。\n\n对于每个元素nums[i],都有两种选择,即选择该元素或不选择该元素。因此,总共有2^n种不同的子集。\n\n对于每种子集,需要遍历数组nums,判断每个元素是否在该子集中,这需要O(n)的时间。因此,总时间复杂度为O(2^n * n)。
原文地址: https://www.cveoy.top/t/topic/qr6o 著作权归作者所有。请勿转载和采集!