力扣(LeetCode)刷题,简单题(第9期)
【摘要】 目录
第1题:反转图像
第2题:上升下降字符串
第3题:合并两个排序链表
第4题:和为0的N个唯一整数
第5题:反转二叉树
第6题:高度检查器
第7题:距离值
第8题:自除数
第9题:最大数值
第10题:反转字符串
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:反转图像...
目录
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:反转图像
试题要求如下:
回答(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<ASize;i++){
-
num=AColSize[i]-1;
-
for(int j=0;j<AColSize[i];j++,num--){
-
if(j<num){
-
data_buf=A[i][j];
-
A[i][j]=A[i][num];
-
A[i][num]=data_buf;
-
}
-
}
-
-
for(int j=0;j<AColSize[i];j++){
-
A[i][j]=!A[i][j];
-
}
-
}
-
-
*returnSize=ASize;
-
*returnColumnSizes=AColSize;
-
-
return A;
-
}
运行效率如下所示:
第2题:上升下降字符串
试题要求如下:
回答(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<len;){
-
for(j = 0 ; j<26&&i<len ; j++){
-
if(cnt[j]>0){
-
s[i++] = 'a' + j;
-
cnt[j]--;
-
}
-
}
-
for(j=25 ; j>=0 && i<len ; j--){
-
if(cnt[j]>0){
-
s[i++] = 'a' + j;
-
cnt[j]--;
-
}
-
}
-
}
-
return s;
-
}
运行效率如下所示:
第3题:合并两个排序链表
试题要求如下:
回答(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;
-
}
-
}
运行效率如下所示:
第4题:和为0的N个唯一整数
试题要求如下:
回答(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<n/2;i++,j--){
-
data_buf[i]=i+1;
-
data_buf[j]=-(i+1);
-
}
-
-
return data_buf;
-
}
运行效率如下所示:
第5题:反转二叉树
试题要求如下:
回答(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;
-
}
运行效率如下所示:
第6题:高度检查器
试题要求如下:
回答(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;
-
}
运行效率如下所示:
第7题:距离值
试题要求如下:
回答(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;
-
}
运行效率如下所示:
第8题:自除数
试题要求如下:
回答(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;
-
}
运行效率如下所示:
第9题:最大数值
试题要求如下:
回答(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);
-
}
运行效率如下所示:
第10题:反转字符串
试题要求如下:
回答(C语言):
-
void reverseString(char* s, int sSize){
-
int i=0,j=sSize-1;
-
char data_buf;
-
-
while(i<j){
-
data_buf=s[i];
-
s[i]=s[j];
-
s[j]=data_buf;
-
-
i++;
-
j--;
-
}
-
}
运行效率如下所示:
文章来源: handsome-man.blog.csdn.net,作者:不脱发的程序猿,版权归原作者所有,如需转载,请联系作者。
原文链接:handsome-man.blog.csdn.net/article/details/105158787
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)