九国列车《 力扣 》零基础打卡指南(第五天)指针的处理及题解总结

Posted xiaowu..

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了九国列车《 力扣 》零基础打卡指南(第五天)指针的处理及题解总结相关的知识,希望对你有一定的参考价值。

1.leetcode.1470--重新排列数组

int * shuffle(int *nums,int numsSize,int n,int *returnSize)//注意,函数的返回值是int *,按题目要求返回数组的地址,但是数组的大小也需要让调用者知道,这时我们利用一个参数returnSize去实现

int * jie=(int *)malloc( sizeof(int) * numsSize);//使用malloc函数动态开辟内存空间,搞出一个长度为numsSize的数组,首地址为jie.
int i=0;
for(i=0;i<numsSize;i++)

if(i%2!=0)//这里是判断数组下标是否是奇数

jie[i]=nums[n+i/2];//从题目可看到,构建数组时,原来数组左边走1个x,右边走一个y,所以在构建下标奇数位时,后面的i要除2。

else

jie[i]=nums[i/2];//同理我们举例子当下标为0,2,4,6的时候很容易观察到都是原来数组下标的2倍


*returnSize=numsSize;
return jie;

 2.leetcode.1929--数组串联

 

int *jie(int *nums,int numsSize,int *returnSize)

int *jie=( int *)malloc(sizeof(int)* 2*numsSize);//因为要拼接的数组长度是原来数组长度的2倍,所以这里要乘以2
int i;
for(i=0;i<numsSize;i++)

jie[i+numsSize]=jie[i]=nums[i];//进行对数组元素的填充和赋值

*returnSize=2*numsSize;//和上一道题一样,需要搞一个传参弄出数组的长度
return jie;
  • 这两道题非常相似,可以结合着作为错题笔记。 
  • 3.leetcode.1920--基于排列构建数组
int *buildArry(int *nums,int numsSize,int *returnSize)

int *ans=(int *)malloc(sizeof(int)* numsSize);//老规矩,动态分配内存空间,数组长度为numsSize,首地址为ans.
int i=0;
for(i=0;i<numsSize;i++)

ans[i]=nums[nums[i]];//按题目要求带进去就行

*returnSize=numsSize;//依旧是用参数实现将数组长度告诉调用者
return ans;

 以上三道题真不愧是英雄哥总结出的零基础打卡指南,在写熟练后总结注意事项,类比推理即可,加油!

  • 4.leetcode.1480--一维数组的动态和
  •  

 

int *jiejie( int *nums,int numsSize,int * returnSize)

int *jie=(int *)malloc(sizeof(int)*numsSize);
int i;
for(i=0;i<numsSize;i++)

jie[i]=nums[i];//先给第一个元素搞上相同的值
if(i!=0)//从第二个元素开始,每一个元素都是前一个元素和nums数组中该位置的元素的和


jie[i]=jie[i-1]+nums[i];


*returnSize=numsSize;
return jie;

5.leetcode.剑指offer58--左旋转字符串

这道题看着可能很简单,但是在写的时候对数组元素的赋值规律总把握不清晰,考验思维能力,建议在演草纸上推一推找找规律,这里我们来看一下题解

char* reverseLeftWords(char* s, int k)
    int i;
    int n = strlen(s);
    char *ret = (char *)malloc( (n + 1) * sizeof(char) );   //题解上注明在申请字符串时要多申请一个,因为要用来存放结尾标记\\0.
    for(i = 0; i < n; ++i) 
        ret[i] = s[(i + k) % n];//这一步是本题目的核心规律,我们在写的时候总会思考要在什么时候开始接上之前的字符,当i+我们设定的位置k%字符串的长度n正好为1的时候,会接上k之前的元素,作为笔记整理一下。                      
    
    ret[n] = '\\0';                                           
    return ret;

 总结:英雄哥推出的打卡活动非常适合只有一门语言基础的萌新去练习和将不会的进行总结,先水简单题,养成习惯,错题多翻看,也不失明智。

今天是九国列车打卡第五天,指针。不管再忙,明天也要水题和总结不会的题解哦!

天道酬勤,勤能补拙,加油,萌新们!

 

以上是关于九国列车《 力扣 》零基础打卡指南(第五天)指针的处理及题解总结的主要内容,如果未能解决你的问题,请参考以下文章

《九日集训 - 雪国列车》(第四天) 一维数组(leetcode零基础打卡指南)

《LeetCode零基础指南》(第十四讲) 力扣常见报错集锦

《算法零基础100讲》(第45讲) 位运算 (位或) 进阶

《算法零基础100讲》(第3讲) 矩阵

《LeetCode零基础指南》(第十三讲) 如何自己找题

《算法零基础100讲》(第15讲) 二分快速幂