快乐水题412. Fizz Buzz

Posted 谁吃薄荷糖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快乐水题412. Fizz Buzz相关的知识,希望对你有一定的参考价值。

原题:

力扣链接:412. Fizz Buzz

题目简述:

给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:

  • answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。
  • answer[i] == “Fizz” 如果 i 是 3 的倍数。
  • answer[i] == “Buzz” 如果 i 是 5 的倍数。
  • answer[i] == i 如果上述条件全不满足。

解题思路

1.难点在动态生成二维字符串数组(本题解提供两种生成方法(连续内存与非连续内存),都可用);
2.*returnSize = n; ///< 这个比较坑。二维数组输出字符串的个数n。如写成malloc的大小,就报错
3.利用sprintf来把int转char数组:sprintf(pps8Output[i - 1],"%d", i);
4.其他没啥了。。。

C代码:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
char** fizzBuzz(int n, int* returnSize) {
    int i = 0;
    *returnSize = n; ///< 这个比较坑。二维数组输出字符串的个数n。如写成malloc的大小,就报错

    ///< 动态开辟二维数组 start
    ///< 法1
    ///< 申请可能非连续内存
    // char ** pps8Output = malloc(sizeof(char *)*n); ///< 一级指针
    // for(i = 0;i < n; i++)
    // {
    //     pps8Output[i] = malloc(10*sizeof(char)); ///< 二级指针
    // }

    ///< 法2
    ///< 申请连续内存
    char ** pps8Output = malloc(sizeof(char *)*n); ///< 一级指针
    pps8Output[0] = malloc(10*n*sizeof(char)); ///< 二级指针
    for(i = 1;i < n; i++)
    {
        ///< 一次性动态申请好全部的内存,然后计算每行的开始地址,用单个下标访问,进行赋值
        pps8Output[i] = pps8Output[0] + i*10; ///< 二级指针 
    }
    ///< 动态开辟二维数组 end

    for (i = 1; i <= n; i++)
    {
        if ((i % 3 == 0) && (i % 5 == 0))
        {
            strcpy(pps8Output[i - 1], "FizzBuzz");
        }
        else if ((i % 3 == 0) && !(i % 5 == 0))
        {
            strcpy(pps8Output[i - 1], "Fizz");
        }
        else if (!(i % 3 == 0) && (i % 5 == 0))
        {
            strcpy(pps8Output[i - 1], "Buzz");
        }
        else
        {
            sprintf(pps8Output[i - 1],"%d", i);
        }
    }


    // for (i = 0; i < n ; i++)
    // {
    //     printf("%s\\r\\n", pps8Output[i]);
    // }

    return pps8Output;
}

力扣结果展示:

以上是关于快乐水题412. Fizz Buzz的主要内容,如果未能解决你的问题,请参考以下文章

412. Fizz Buzz [模拟水题]

412-Fizz Buzz

LeetCode之412. Fizz Buzz

412. Fizz Buzz

Leetcode - 412. Fizz Buzz

LeetCode 412. Fizz Buzz