上海企业建站流程,平台软件是怎么做出来的,网站建设ppt答辩,南通制作网站一、题目 二、本人思路及代码
这道题目它要求的时间空间利用率都是n#xff0c;那么可以考虑创建一个长度为n的数组repeat初始化为0#xff0c;下标代码出现的数字#xff0c;下标对应的数组内容代表该下标数字出现的次数。然后遍历提供的数组#xff0c;每出现一个数字那么可以考虑创建一个长度为n的数组repeat初始化为0下标代码出现的数字下标对应的数组内容代表该下标数字出现的次数。然后遍历提供的数组每出现一个数字就去repeat数组下标对应位置内容1然后判断如果已经1了那说明重复了直接返回这个下标数字即可。
/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可** * param numbers int整型一维数组 * param numbersLen int numbers数组长度* return int整型*/
int duplicate(int* numbers, int numbersLen ) {// write code here//int repeat[numbersLen]{0};int *repeat (int*) malloc (numbersLen * sizeof(int));for(int j0;jnumbersLen;j) repeat[j]0;for(int i0;inumbersLen;i){int nnumbers[i];if(nnumbersLen){return -1;}else {repeat[n];if(repeat[n]1){return n;}}}return -1;
}三、疑问
这里为什么不能直接创建一个长度为numbersLen的数组呢 编译报错说是numbersLen是一个会变的数字不能用它作为数组长度可是当运行到这个子函数内部并创建数组的时候numbersLen不是一个已知的且在子函数退出之前固定不变的数吗