自除数C语言编码,力扣(LeetCode)刷题,简单题(第9期)

目录

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

第1题:反转图像

试题要求如下:

eff8d6c0a627f682955bfdc829945972.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** flipAndInvertImage(int** A, int ASize, int* AColSize, int* returnSize, int** returnColumnSizes){

int num=0,data_buf=0;

for(int i=0;i

num=AColSize[i]-1;

for(int j=0;j

if(j

data_buf=A[i][j];

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

A[i][num]=data_buf;

}

}

for(int j=0;j

A[i][j]=!A[i][j];

}

}

*returnSize=ASize;

*returnColumnSizes=AColSize;

return A;

}

运行效率如下所示:

4278da9cfcc5757b8c9af2bc372e88ce.png

第2题:上升下降字符串

试题要求如下:

7b7317e80dd87de4f4f335a13c9466b4.png

回答(C语言):

char * sortString(char * s){

int* cnt = (int*)malloc(sizeof(int)*26);

memset(cnt,0,sizeof(int)*26);

int len = strlen(s);

int i = len,j=0;

while(i--) cnt[ s[i] - 'a']++;

for(i = 0;i

for(j = 0 ; j<26&&i

if(cnt[j]>0){

s[i++] = 'a' + j;

cnt[j]--;

}

}

for(j=25 ; j>=0 && i

if(cnt[j]>0){

s[i++] = 'a' + j;

cnt[j]--;

}

}

}

return s;

}

运行效率如下所示:

dce458421b8ff825914a847820626ad2.png

第3题:合并两个排序链表

试题要求如下:

a12c349771c1dabfdb83a4f6f4b3623f.png

回答(C语言):

/**

* Definition for singly-linked list.

* struct ListNode {

* int val;

* struct ListNode *next;

* };

*/

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){

if (NULL == l1)

return l2;

if (NULL == l2)

return l1;

if (l1->val > l2->val)

{

l2->next=mergeTwoLists(l1, l2->next);

return l2;

}

else

{

l1->next=mergeTwoLists(l1->next, l2);

return l1;

}

}

运行效率如下所示:

6b04eb55dd6b7510b641c54e502cc9d1.png

第4题:和为0的N个唯一整数

试题要求如下:

edd0d142f02fc89a5c2c8450cdbeaa68.png

回答(C语言):

/**

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

*/

int* sumZero(int n, int* returnSize){

int* data_buf=(int*)malloc(sizeof(int)*(n));

memset(data_buf,0,sizeof(int)*(n));

*returnSize=n;

for(int i=0,j=n-1;i

data_buf[i]=i+1;

data_buf[j]=-(i+1);

}

return data_buf;

}

运行效率如下所示:

22a7b6c31c62555de94c2575d8fd3499.png

第5题:反转二叉树

试题要求如下:

b8a5b7859d4bb68b6b0d40dc959c02ee.png

回答(C语言):

/**

* Definition for a binary tree node.

* struct TreeNode {

* int val;

* struct TreeNode *left;

* struct TreeNode *right;

* };

*/

struct TreeNode* invertTree(struct TreeNode* root){

if(root==0) return 0;

struct TreeNode* tmp=root->left;

root->left=invertTree(root->right);

root->right=invertTree(tmp);

return root;

}

运行效率如下所示:

d8408f7e9503c8a9f1bfb7329d0bdfe4.png

第6题:高度检查器

试题要求如下:

10e8c521c642bac0613a6ecb3581ae30.png

回答(C语言):

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

{

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

}

int heightChecker(int* heights, int heightsSize){

int ans = 0, tmp[heightsSize];

for(int i = 0;i < heightsSize;++i)

tmp[i] = heights[i];

qsort(tmp, heightsSize, sizeof(int), cmp);

for(i = 0;i < heightsSize;++i)

{

if(tmp[i] != heights[i])

++ans;

}

return ans;

}

运行效率如下所示:

88f01bcbba22095235861adcce6af0e2.png

第7题:距离值

试题要求如下:

c5bcd4bc2f77716a114a61e5dc50f8d5.png

回答(C语言):

int findTheDistanceValue(int* arr1, int arr1Size, int* arr2, int arr2Size, int d){

int ans = 0;

for(int i = 0,j = 0;i < arr1Size;++i)

{

for(j = 0;j < arr2Size && abs(arr1[i] - arr2[j]) > d;++j);

if(j >= arr2Size)

++ans;

}

return ans;

}

运行效率如下所示:

b847050df32288e5e9e4115553afa17b.png

第8题:自除数

试题要求如下:

5a420a061e895912bb28bd58bd243a14.png

回答(C语言):

/**

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

*/

int* selfDividingNumbers(int left, int right, int* returnSize){

int len = right-left+1;

int index=0;

int *returnNum = (int *)malloc(sizeof(int)*(len+1));

memset(returnNum, 0, sizeof(int)*(len+1));

for(int i=left; i<=right; i++){

int flag=0, num=1, tmp=i;

while(tmp > 0){

num = tmp%10;

if(num == 0 || i%num != 0){

flag = 1;

}

tmp /= 10;

}

if(flag == 0)

returnNum[index++] = i;

}

*returnSize = index;

return returnNum;

}

运行效率如下所示:

50dbb3e8c720b9b175904fb4b38049f3.png

第9题:最大数值

试题要求如下:

f1a2289639aca8212de4f9228d4cffbf.png

回答(C语言):

/* a-b, k等于结果的符号位 */

/* k=1, b>a, 返回b*1 + a*0 */

/* k=0, b<=a, 返回b*0 + a*1 */

int maximum(int a, int b){

long k = (((long)a - (long)b) >> 63) & 1;

return b * k + a * (k ^ 1);

}

运行效率如下所示:

338430c9d5ed36efb611bcc9b21a7c1b.png

第10题:反转字符串

试题要求如下:

26f6e62e749a7b59c7d8a4ffbe88f445.png

回答(C语言):

void reverseString(char* s, int sSize){

int i=0,j=sSize-1;

char data_buf;

while(i

data_buf=s[i];

s[i]=s[j];

s[j]=data_buf;

i++;

j--;

}

}

运行效率如下所示:

bc25a2da60978185341f6045abbe070e.png

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值