面试3 题目二,不修改数组找到重复的数字

 

 

在一个长度为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 }

这里面 时常出现   数组溢出和初始化问题,修改了很多遍才成功的,针对于数组来说,范围很重要

转载于:https://www.cnblogs.com/xiaochige/p/8299174.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值