力扣有序数组的平方c语言,力扣(LeetCode)刷题,简单题(第10期)

目录

力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

第1题:有序数组的平方

试题要求如下:

fb67e704de5ef504605bd193905b3db3.png

回答(C语言):

/**

* Note: The returned array must be malloced, assume caller calls free().

*/

int cmp (const void * a, const void * b)

{

return ( *(int*)a - *(int*)b );

}

int* sortedSquares(int* A, int ASize, int* returnSize){

*returnSize=ASize;

for(int i=0;i

A[i]=A[i]*A[i];

}

qsort(A, ASize, sizeof(int), cmp);

return A;

}

运行效率如下所示:

4198d7966488020af1d8d1c072f57e59.png

第2题:增减字符串匹配

试题要求如下:

c83b2cc716c1680173206ddad75815d6.png

回答(C语言):

/**

* Note: The returned array must be malloced, assume caller calls free().

*/

int* diStringMatch(char * S, int* returnSize)

{

int N = strlen(S);

int a=N;

int b=0;

int *ret = (int *)malloc(sizeof(int)*(N+1));

*returnSize = N + 1;

for (int i=0;i

if (S[i] == 'I'){

ret[i] = b;

b++;

}

else{

ret[i] = a;

a--;

}

}

ret[N] = b;

return ret;

}

运行效率如下所示:

c21e024ac5714f995a5804b71b0d4f77.png

第3题:数字的补数

试题要求如下:

554b52cd8cbf7829fe3678a13a7fd474.png

回答(C语言):

int findComplement(int num){

long temp = 1;

while (num >= temp){

temp <<= 1;

}

return (temp - 1 - num);

}

运行效率如下所示:

b158a907b65f797e600b22b851f6ff70.png

第4题:Nim游戏

试题要求如下:

1b024d9c0a6a8b80f9472aa079521f58.png

回答(C语言):

bool canWinNim(int n){

return (n % 4 != 0);

}

运行效率如下所示:

8fa6d5dcc53319911b5a639e0e9098d2.png

第5题:删除字符串中的所有相邻重复项

试题要求如下:

9d2a13ecf41df1c50d49636a188a6a94.png

回答(C语言):

char * removeDuplicates(char * S){

int i, cnt, len = strlen(S);

for(i = 1, cnt = 0;i <= len;++i)

{

if(cnt == -1 || S[i] != S[cnt])

S[++cnt] = S[i];

else

--cnt;

}

return S;

}

运行效率如下所示:

bc79c3c35542cf790f1e57ccf89c638e.png

第6题:除数博弈

试题要求如下:

df458a5af40d9bcc371d629df9c9dac5.png

回答(C语言):

bool divisorGame(int N){

// 如果爱丽丝拿到奇数,则必输,

// 因为奇数的因数必为奇数,则N-x必为偶数,

// 鲍勃拿到偶数之后,只需要-1交还给爱丽丝,则爱丽丝再次拿到奇数,

// 这样鲍勃永远拿到偶数,直到拿到2赢下比赛

// 反过来,如果爱丽丝拿到偶数,只需要-1给鲍勃,那么鲍勃就必输。

return N%2==0;

}

运行效率如下所示:

a87b16fe655cb8fa4dab3bdfd5cfee4d.png

第7题:转换成小写字母

试题要求如下:

23cfeda04ba0c88182239d74a3160067.png

回答(C语言):

char * toLowerCase(char * str){

for(int i=0;i

if(str[i]>='A'&&str[i]<='Z')

str[i]=str[i]+32;

}

return str;

}

运行效率如下所示:

2c092fb5e158b39a5a531e18b5884ee7.png

第8题:生成每种字符都是奇数个的字符串

试题要求如下:

ff3e9493b79d51ca2e3e3483d7d2e2ef.png

回答(C语言):

char * generateTheString(int n)

{

char *ret=(char *)malloc(sizeof(char)*(n+1));

ret[n]='\0';

memset(ret,'a',n);

ret[n-1]='a'+(n%2==0);

return ret;

}

运行效率如下所示:

a939478c81770d812226721d28a1290a.png

第9题:按奇偶排序数组

试题要求如下:

de68345676f5a2932df6980f71bb008e.png

回答(C语言):

/**

* Note: The returned array must be malloced, assume caller calls free().

*/

int* sortArrayByParity(int* A, int ASize, int* returnSize){

int i=0,j=ASize-1;

int temp=0;

while(i

if(A[i]%2!=0 && A[j]%2==0){

temp=A[j];

A[j]=A[i];

A[i]=temp;

}

if(A[i]%2==0)

i++;

if(A[j]%2!=0)

j--;

}

*returnSize=ASize;

return A;

}

运行效率如下所示:

dbd4f56521ab30409838d8b087d4e4d1.png

第10题:转置矩阵

试题要求如下:

3360087f19fd8d787efad5a1a61785af.png

回答(C语言):

/**

* Return an array of arrays of size *returnSize.

* The sizes of the arrays are returned as *returnColumnSizes array.

* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().

*/

int** transpose(int** A, int ASize, int* AColSize, int* returnSize, int** returnColumnSizes){

int** num=(int**)malloc(sizeof(int*)*(*AColSize));

*returnColumnSizes=(int*)malloc(sizeof(int)*(*AColSize));

*returnSize=*AColSize;

//分配内存

for(int i=0;i

num[i]=(int*)malloc(sizeof(int)*ASize);

returnColumnSizes[0][i] = ASize;

}

//矩阵转置

for(int i=0;i

for(int j=0;j

num[j][i]=A[i][j];

}

}

return num;

}

运行效率如下所示:

61045d11cadc21d7846f8ebb063dea5f.png

本文分享 CSDN - 不脱发的程序猿。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值