zoukankan      html  css  js  c++  java
  • 【leetcode】78. 子集

    int** subsets(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) {
        int** ans = malloc(sizeof(int*) * (1 << numsSize));
        *returnColumnSizes = malloc(sizeof(int) * (1 << numsSize));
        *returnSize = 1 << numsSize;
        int t[numsSize];
        for (int mask = 0; mask < (1 << numsSize); ++mask) {
            int tSize = 0;
            for (int i = 0; i < numsSize; ++i) {
                if (mask & (1 << i)) {
                    t[tSize++] = nums[i];
                }
            }
            int* tmp = malloc(sizeof(int) * tSize);
            memcpy(tmp, t, sizeof(int) * tSize);
            (*returnColumnSizes)[mask] = tSize;
            ans[mask] = tmp;
        }
        return ans;
    }
    复制代码
    复制代码
    void recursion(int* nums,int n, int* returnSize, int* col,int* temp,int cnt,int** arr,int start){
        for(int i=start; i<n; i++){
            temp[cnt]=nums[i];
            arr[(*returnSize)]=(int*)calloc(cnt+1,sizeof(int));
            memcpy(arr[(*returnSize)],temp,(cnt+1)*sizeof(int));
            col[(*returnSize)++]=cnt+1;
            recursion(nums, n, returnSize, col, temp, cnt+1, arr,i+1);
        }
    }
    
    int** subsets(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){
        int** arr=(int**)calloc((1<<numsSize),sizeof(int*));
        int temp[100]={0};
        *returnSize=1;
        *returnColumnSizes=(int*)calloc((1<<numsSize),sizeof(int));
        recursion(nums,numsSize,returnSize,*returnColumnSizes,temp,0,arr,0);    
        return arr;
    }
    复制代码
  • 相关阅读:
    box-sizing
    max-width
    如何编写高质量CSS
    CSS文字大小单位PX、EM、PT
    jQuery设计思想
    pageX,clientX,offsetX,layerX的那些事
    html块级元素和内联元素区别详解
    centos彻底删除mysql
    删:[CentOS 7] 安装nginx
    CentOS7.0安装与配置Tomcat-7
  • 原文地址:https://www.cnblogs.com/ganxiang/p/14126495.html
Copyright © 2011-2022 走看看