leetCode做题笔记——算法入门与数组(C语言)

 笔记记录在代码的注释里,还会随着做题进度继续更新,这是我在男朋友帮助下做出来的第一部分题!也是C语言编的第一个程序!如果有错误还请各位大佬批评指正。

 2235.两整数相加

#include <stdio.h>
int nums, numsize, target;
int nums[numsize];
scanf("%d",&nums[numsize]);
int i=0;
void twoSum()
    for(;i<=numsize-1;i++) {
        for (int a=i+1; a<=numsize; a=a+1) {
            if (nums[i]+nums[a]==target){/*两个等号*/
                printf([nums[i],nums[a]]);}
        }
}
twoSum(nums[numsize]);
/*发现在平台上运行只需要编写主函数里的部分,之后的代码会做调整。*/
/*不过代码可以用来复习C语言的整体流程*/

0771.宝石与石头

int numJewelsInStones(char* jewels, char* stones) {
                int a=0;
    for(int i=0;i<strlen(jewels);i++){
        for(int j=0;j<strlen(stones);j++){
            if(jewels[i]==stones[j]){
            a=a+1;}

        }
    }
                return a;/*注意return的位置和变量是否在返回的位置还有效,即是否为全局变量,变量有定义的范围*/
}

1929.数组串联

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* getConcatenation(int* nums, int numsSize, int* returnSize) {

int* arr=(int*)malloc(2*numsSize*sizeof(int));/*动态分布内存的写法*/
for(int i=0;i<2*numsSize;i++){
if(i>=0&&i<numsSize){/*i要在前,需要用&&分开两个条件*/
    arr[i]=nums[i];
}
else{
arr[i]=nums[i-numsSize];
}
}
*returnSize=2*numsSize;/*理解返回值意思*/
return arr;
}

1480.一维数组的动态和

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* runningSum(int* nums, int numsSize, int* returnSize){
    int* nums1=(int*)malloc(numsSize*sizeof(int));
    nums1[0]=nums[0];
for(int i=1;i<numsSize;i++){
           nums1[i]=nums1[i-1]+nums[i];   /*常用思路*/
       }     
       *returnSize=numsSize;/*注意returnSize取值*/
       return nums1; 
}

0709.转换成小写字母

char* toLowerCase(char* s) {
    for(int i=0;i<strlen(s);i++){/*取字符串长度函数*/
        s[i]=tolower(s[i]);/*变大写字母函数tolower*/
    }
    return s;
}

1672.最富有客户的资产总量

int maximumWealth(int** accounts, int accountsSize, int* accountsColSize) {
    int a=sizeof(accounts) / sizeof(accounts[0]);/*本意是取矩阵的行和列,但是报错,GPT说是取到了地址而不是行数*/
    int b=sizeof(accounts[0])/sizeof(int);
    int* nums=(int*)malloc(sizeof(a));
    for(int i=0;i<a;i++){
        nums[i]=0;/*初始化别忘了*/
        for(int j=0;j<b;j++){
          nums[i]= nums[i]+accounts[i][j];
        }
        
    }return nums;
}

修改后

int maximumWealth(int** accounts, int accountsSize, int* accountsColSize) {
    int a=accountsSize;
    int b=accountsColSize[0];
    int* nums=(int*)malloc(a*sizeof(int));/*数组大小是a*sizeof(int)而不是a,这里不明白*/
    for(int i=0;i<a;i++){
        nums[i]=0;/*别忘了初始化*/
        for(int j=0;j<b;j++){
          nums[i]= nums[i]+accounts[i][j];
        }
        
    }
    int arr=0;
    for(int k=0;k<a;k++){
        if(nums[k]>arr){
            arr=nums[k];
        }
    }return arr;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值