Home 成长之路 Leetcode题解 数组之返回指针

数组之返回指针

面试题 16.11. 跳水板难度简单33收藏分享切换为英文关注反馈你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。
返回的长度需要从小到大排列。
示例:
输入:
shorter = 1
longer = 2
k = 3
输出: {3,4,5,6}
注意:一般来说函数头为:int *,则要求返回指针,这种情况下定义数组最好用malloc(),即指针,方便返回;
int* divingBoard(int shorter, int longer, int k, int* returnSize){
    if(k == 0){                                 //k=0时
        * returnSize = 0;
        return NULL;
    }
    if(shorter == longer){                     //shorter = longter
        *returnSize = 1;                     
        int *p = (int *)malloc(sizeof(int));     //注意:两种特殊情况不可交换
        *p = shorter * k;
        return p;
    }
    *returnSize = k+1;
    int *length = (int *)malloc(sizeof(int)*(k+1));
    for(int i = 0;i<=k;i++){
        length[i] = shorter * (k-i) + longer *i;  //借用数组存储
    }
    return length;
}

SIMILAR ARTICLES

0 139

0 133

发表评论

发表评论