在一个长度为n+1 的数组里所有数字都在 1 到n之间
1 #include<iostream> 2 3 using namespace std; 4 5 int Find_num(int num[],int length ) 6 { 7 if(num == nullptr || length <= 0) 8 return -1; 9 int k = 0; 10 int *tem = (int *)malloc((length) * sizeof(int)); 11 for(int i = 1 ;i <= length ;i++) 12 { 13 tem[i] = 0; 14 } 15 for(int i =0 ; i< length ;i++) 16 { 17 k = num[i]; 18 tem[k] = tem[k]+1; 19 printf("%d\n",tem[k]); 20 21 } 22 23 int max = 1; 24 int flag = 0; 25 for(int i = 1;i<= length ;i++) 26 { 27 28 if(tem[i]> max) 29 { 30 flag = i; 31 max = tem[flag]; 32 } 33 } 34 if(max == 1) return -1; 35 36 return flag; 37 } 38 39 40 int main() 41 { 42 int mun[5]= {1,4,5,5,5}; 43 int a = Find_num(mun,5); 44 printf("%d\n",a); 45 system("pause"); 46 }
这里面 时常出现 数组溢出和初始化问题,修改了很多遍才成功的,针对于数组来说,范围很重要