1470. 重新排列数组https://leetcode.cn/problems/shuffle-the-array/
int* shuffle(int* nums, int numsSize, int n, int* returnSize){
*returnSize = numsSize;
int* ret = (int*)malloc(sizeof(int)*numsSize);
for(int i = 0;i<numsSize;i+=2){
ret[i] = nums[i/2];
}
for(int i = 1;i<numsSize;i+=2){
ret[i] = nums[(i-1)/2+numsSize/2];
}
return ret;
}
int* getConcatenation(int* nums, int numsSize, int* returnSize) {
*returnSize = numsSize*2;
int* ret = (int*)malloc(sizeof(int)*numsSize*2);
for(int i = 0;i<numsSize;i++){
ret[i] = nums[i];
ret[i+numsSize] = nums[i];
}
return ret;
}
这题的话,enmm,没什么特别难的地方。对指针解引用,申请返回的数组的内存。遍历数组,对ret数组进行赋值。
1920. 基于排列构建数组https://leetcode.cn/problems/build-array-from-permutation/
int* buildArray(int* nums, int numsSize, int* returnSize) {
*returnSize = numsSize;
int* ret = (int*)malloc(sizeof(int)*numsSize);
for(int i = 0;i<numsSize;i++){
ret[i] = nums[nums[i]];
}
return ret;
}
这题也没什么好说的,解引用,然后申请内存,遍历赋值,返回。
int* runningSum(int* nums, int numsSize, int* returnSize){
int sum = 0;
*returnSize = numsSize;
int* ret = (int*)malloc(sizeof(int)*numsSize);
for(int i = 0;i<numsSize;i++){
sum += nums[i];
ret[i] = sum;
}
return ret;
}
这题的话,最主要的就算能够看出新数组的下标为i的数据的值是0到i-1的和再加上i的值,所以就需要一个值来储存前面的值。
LCR 182. 动态口令https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
char* dynamicPassword(char* password, int target) {
int i;
int len = strlen(password);
char *ans = (char *)malloc(sizeof(char)*(len+1));
for(i = 0;i<len;i++){
if(i<target){
ans[len - target + i] = password[i];
}else{
ans[i-target] = password[i];
}
}
ans[len] = '\0';
return ans;
}
这题的话,首先我们要得到字符串的长度,然后还是申请相对应的内存,遍历。这个时候的遍历我们要分为两个部分,第一个部分是我们要移到最后的字符,另一部分是往前面移的字符。
注意:申请内存的时候别忘了给‘\0’申请一个位置,因为如果要printf("%s")来输出字符的话,只有最后一个是‘\0‘才能够正常的打印出字符串。
LCR 122. 路径加密https://leetcode.cn/problems/ti-huan-kong-ge-lcof/
char* pathEncryption(char* path) {
int len = strlen(path);
char* ret = (char*)malloc(sizeof(char)*(len+1));
for(int i = 0;i<len;i++){
if(path[i] == '.') ret[i] = ' ';
else ret[i] = path[i];
}
ret[len] = '\0';
return ret;
}
啧,这题就是遍历的时候加个判断,判断一下是不是.,如果是.,那就换成空格。
emmm,因为这几天在写二维数组跟二级指针的题目,这些题目我写起来比较吃力,这篇还是我在1.14的晚上十一点三十七写完的。可能偶尔会缺一两天吧,那些东西我也需要消化一下,希望你们能谅解。