11 篇文章 0 订阅

# 1.0 解题报告

## Q1:1470. 重新排列数组

/**Q1_method1:
*trick:以i为媒介，串联两边数组
* Note: The returned array must be malloced, assume caller calls free().
*/
int* shuffle(int* nums, int numsSize, int n, int* returnSize){

/*s1:申请数组*/
int *ret = (int *)malloc(sizeof(int)*numsSize);

/*s2:已申请空间构建出新数组int ret[] ,大小为numsSize*/
int i;

for(i=0;i<n;++i)
{
*(ret+2*i) = *(nums+i);
*(ret+2*i+1) = *(nums + i + n);
}

*returnSize = numsSize;

return ret;

}


## Q2:1929. 数组串联

/**Q2_method2:
*trick:以i为媒介，串联两边数组
* Note: The returned array must be malloced, assume caller calls free().
*/
int* getConcatenation(int* nums, int numsSize, int* returnSize){

int *ans= (int *)malloc(sizeof(int)*numsSize*2);
int i;
for(i=0;i<numsSize;++i)
{
ans[i]=nums[i];
ans[numsSize+i] = nums[i];
}

*returnSize = 2*numsSize;

return ans;

}


## Q3：1920. 基于排列构建数组

/**
*trick:以i为媒介，串联两边数组
* Note: The returned array must be malloced, assume caller calls free().
*/
int* buildArray(int* nums, int numsSize, int* returnSize){

int * ans=(int *)malloc(sizeof(int)*numsSize);

int i;
for(i=0;i<numsSize;++i)
{
*(ans+i) = *(nums+*(nums+i)) ;
}
*returnSize = numsSize;
return ans;

}


## Q4:1480. 一维数组的动态和

/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* runningSum(int* nums, int numsSize, int* returnSize){
/*竟然漏写了malloc,折腾半天才发现，如有问题，先从头到尾检查一遍*/
int *ans = (int *)malloc(sizeof(int)*numsSize);

int i,j;

for(i=0;i<numsSize;++i)
{
int sum = 0;
for(j=0;j<=i;++j)
{
sum += *(nums+j);
}

*(ans + i) = sum;
}

*returnSize = numsSize;

return ans;

}


## Q5:剑指 Offer 58 - II. 左旋转字符串

/*Q5_method_1:*/
char* reverseLeftWords(char* s, int n){
if(n == 0)
return s;
int i;
int sum = strlen(s);
char *ans = (char *)malloc(sizeof(char)*(sum+1));

for(i=0;i<sum;++i)
{
*(ans+i) = *(s+(i+ n)%sum);
}
ans[sum] = '\0';
return ans;

}


/*Q5_method_2:*/
char* reverseLeftWords(char* s, int n){
if(n == 0)
return s;
int i;
int sum = strlen(s);
char *ans = (char *)malloc(sizeof(char)*(sum+1));

/*如何确定目标：*/
for(i=0;i<sum;++i)
{
*(ans+(i+sum-n)%sum) = *(s+i);/*i在“=”左侧，计算右侧，还是
i在"="右侧，计算左侧的表达式是不一样的*/
}
ans[sum] = '\0';
return ans;

}



# 2.思考总结：

(1)如果深入研究，时间不够用；
（2）对LeetCode的使用更加熟悉；

05-15 22
05-12 247

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

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

¥2 ¥4 ¥6 ¥10 ¥20

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