今日刷题内容:数组
今天没有跟上进度,就听懂了一题,
前言
今天没有跟上进度,就听懂了一题。这是我个人的一点理解。(用C语言)
一、思路
- 根据k的值有三种情况,为了便于理解,直接将三种情况标明
- 如果k为0返回全0即可
- 如果k大于或小于0,分两种情况讨论,这里展开大于0的
- 如果i+k大于数组最右边下标,会回到数组起始开始算的第i + k - n个位置
- 如果小于数组最右边下标,则直接相加即可
- 小于0的情况也是一样
二、代码
1.引入库
题目来自力扣
int* decrypt(int* code, int codeSize, int k, int* returnSize){
int i,j;
int val = 0;
int n = codeSize;
int *ret=(int*)malloc(sizeof(int)*n);
*returnSize=codeSize;
for(i = 0;i < n;i ++){
if(k > 0){
val=0;
for(j = i + 1;j <= i+k;j ++){
val += code[j % n];
}
}
else if(k < 0){
val=0;
for(j = i - 1;j >= i + k;j --){
val += code[(j % n + n) % n];
}
}
ret[i]=val;
}
return ret;