【快乐水题】412. Fizz Buzz
生活随笔
收集整理的這篇文章主要介紹了
【快乐水题】412. Fizz Buzz
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原題:
力扣鏈接:412. Fizz Buzz
題目簡(jiǎn)述:
給你一個(gè)整數(shù) n ,找出從 1 到 n 各個(gè)整數(shù)的 Fizz Buzz 表示,并用字符串?dāng)?shù)組 answer(下標(biāo)從 1 開(kāi)始)返回結(jié)果,其中:
- answer[i] == “FizzBuzz” 如果 i 同時(shí)是 3 和 5 的倍數(shù)。
- answer[i] == “Fizz” 如果 i 是 3 的倍數(shù)。
- answer[i] == “Buzz” 如果 i 是 5 的倍數(shù)。
- answer[i] == i 如果上述條件全不滿足。
解題思路
1.難點(diǎn)在動(dòng)態(tài)生成二維字符串?dāng)?shù)組(本題解提供兩種生成方法(連續(xù)內(nèi)存與非連續(xù)內(nèi)存),都可用);
2.*returnSize = n; ///< 這個(gè)比較坑。二維數(shù)組輸出字符串的個(gè)數(shù)n。如寫(xiě)成malloc的大小,就報(bào)錯(cuò)
3.利用sprintf來(lái)把int轉(zhuǎn)char數(shù)組:sprintf(pps8Output[i - 1],"%d", i);
4.其他沒(méi)啥了。。。
C代碼:
/*** Note: The returned array must be malloced, assume caller calls free().*/ char** fizzBuzz(int n, int* returnSize) {int i = 0;*returnSize = n; ///< 這個(gè)比較坑。二維數(shù)組輸出字符串的個(gè)數(shù)n。如寫(xiě)成malloc的大小,就報(bào)錯(cuò)///< 動(dòng)態(tài)開(kāi)辟二維數(shù)組 start///< 法1///< 申請(qǐng)可能非連續(xù)內(nèi)存// char ** pps8Output = malloc(sizeof(char *)*n); ///< 一級(jí)指針// for(i = 0;i < n; i++)// {// pps8Output[i] = malloc(10*sizeof(char)); ///< 二級(jí)指針// }///< 法2///< 申請(qǐng)連續(xù)內(nèi)存char ** pps8Output = malloc(sizeof(char *)*n); ///< 一級(jí)指針pps8Output[0] = malloc(10*n*sizeof(char)); ///< 二級(jí)指針for(i = 1;i < n; i++){///< 一次性動(dòng)態(tài)申請(qǐng)好全部的內(nèi)存,然后計(jì)算每行的開(kāi)始地址,用單個(gè)下標(biāo)訪問(wèn),進(jìn)行賦值pps8Output[i] = pps8Output[0] + i*10; ///< 二級(jí)指針 }///< 動(dòng)態(tài)開(kāi)辟二維數(shù)組 endfor (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; }力扣結(jié)果展示:
總結(jié)
以上是生活随笔為你收集整理的【快乐水题】412. Fizz Buzz的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 分享一些看了就能用的面试技巧
- 下一篇: 2020年中国工业品B2B行业研究报告