64,172
社区成员




学习文章来源于:《LeetCode零基础指南》(第五讲) 指针
代码:
int* shuffle(int* nums, int numsSize, int n, int* returnSize){
int* p=(int*)malloc(numsSize*sizeof(int));
for(int i=0;i<n;i++){
p[2*i]=*(nums+i);
p[2*i+1]=*(nums+n+i);
}
*returnSize=numsSize;
return p;
}
运行结果:
代码:
int* getConcatenation(int* nums, int numsSize, int* returnSize){
int *arr = (int *)malloc(sizeof(int)*(numsSize*2));
for(int i = 0;i < numsSize*2;i++)
arr[i] = nums[i % numsSize];
*returnSize = numsSize*2;
return arr;
}
运行结果:
代码:
int* buildArray(int* nums, int numsSize, int* returnSize){
int *ret=(int *)malloc(sizeof(int)*numsSize);
int i;
*returnSize=numsSize;
for(i=0;i<numsSize;i++)
ret[i]=nums[nums[i]];
return ret;
}
运行结果:
代码:
int* runningSum(int* nums, int numsSize, int* returnSize){
*returnSize = numsSize;
for(int i =1;i<numsSize;i++){
nums[i] = nums[i] + nums[i-1];
}
return nums;
}
运行结果:
代码:
char* reverseLeftWords(char* s, int n){
int strLen = strlen(s);
char *str = (char *)malloc(strLen + 1);
int i = 0;
for (i = 0; i < strLen; i++) {
str[i] = s[(n + i) % strLen];
}
str[strLen] = '\0';
//printf("%s\n", str);
return str;
}
运行结果:
代码:
char * defangIPaddr(char * address){
char *ret = (char *)malloc(1000 * sizeof(char));
int returnSize = 0;
int i;
for(i = 0; address[i]; ++i) {
if(address[i] == '.') {
ret[ returnSize++ ] = '[';
ret[ returnSize++ ] = '.';
ret[ returnSize++ ] = ']';
}else {
ret[ returnSize++ ] = address[i];
}
}
ret[ returnSize ] = '\0';
return ret;
}
运行结果:
(这题没啥思路用的英雄哥的做法 )
代码:
char* replaceSpace(char* s){
char *ret = malloc( sizeof(char) * 30001 ); // (1)
int i, retSize = 0;
for(i = 0; s[i]; ++i) {
if(s[i] == ' ') {
ret[retSize++] = '%%';
ret[retSize++] = '2';
ret[retSize++] = '0';
}else {
ret[retSize++] = s[i];
}
}
ret[retSize] = '\0';
return ret;
}
运行结果:
(这题跟上一题的思路基本一致,沿用的英雄哥的思路)
代码:
int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize){
int* ret=malloc(sizeof(int)*numsSize);
*returnSize=0;
for(int i=0;i<numsSize;i++){
int count=0;
for(int j=0;j<numsSize;j++){
if(nums[i]>nums[j]){
count++;
}
}
ret[(*returnSize)++]=count;
}
return ret;
}
运行结果:
代码:
int* printNumbers(int n, int* returnSize){
*returnSize = pow(10, n)-1;
int *ret = malloc(sizeof(int) * (*returnSize));
for(int i = 1; i<=*returnSize; i++){
ret[i-1] = i;
}
return ret;
}
运行结果:
代码:
int* createTargetArray(int* nums, int numsSize, int* index, int indexSize, int* returnSize){
int i;
int *ret = (int *)malloc(numsSize * sizeof(int));
//循环嵌套
for(i=0;i<indexSize;i++){
for(int j=indexSize-1;j>index[i];j--){
ret[j]=ret[j-1];
}
ret[index[i]]=nums[i];
}
*returnSize=indexSize;
return ret;
}
运行结果: