笔记记录在代码的注释里,还会随着做题进度继续更新,这是我在男朋友帮助下做出来的第一部分题!也是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;
}