C语言编程:判断数组里有没有重复数字,有true,无false

boolcontainsDuplicate(int*nums,intnumsSize){intj=0;for(inti=0;i<numsSize;i++){if(nums... bool containsDuplicate(int* nums, int numsSize) {
int j=0;
for(int i=0;i<numsSize;i++){
if(numsSize==1)
return 0;
else if(j!=i)
return containsDuplicate(nums[i],nums[j]);
j++;
}
}

想不出来哪里有问题,请大神指点,O(∩_∩)O谢谢!
bool containsDuplicate(int* nums, int numsSize)
{
int tmp=0;
if(numsSize<2) return 0;
for (int j = 0; j < numsSize - 1; j++)
{
for(int i=0;1<numsSize-1-j;i++)
{
if(nums[i]>nums[i+1])
{ tmp=nums[i];
nums[i]=nums[i+1];
nums[i+1]=tmp;
}
}
}
for(int a= 0;1<numsSize-1;a++)
{
if (nums[a]==nums[a+1]) return 1;
else return 0;
}

}
又写了一遍,换了思路:先排序,然后两两比较。。然而还是不对,求大神帮看问题
展开
 我来答
CodeBlove
推荐于2016-06-20 · TA获得超过3364个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:250万
展开全部
//接口中增加一个索引,目标元素索引,默认从头开始扫描 
bool containsDuplicate(int* nums, int numsSize,int index=0)  
{
  //不要使用==1来判断,如果数组长度为0呢?    
  //另外要在循环处理前先预判,不要在循环体内判断,否则浪费CPU时间
  if(numsSize<2)return false;
  //检查索引(目标元素)是否为最后一个元素,是则任务结束,返回false
  if(index==(numsSize-1))return false;
  //从目标元素下一个元素开始遍历 
  for(int i=index+1;i<numsSize;i++)
  {
     //判断目标元素是否与i索引所指的元素相等,相等则返回true
     if (nums[index]==nums[i])return true; 
  }
  //扫描完所有元素后进行递归,将index递增,切换目标元素进一步检查 
  return containsDuplicate(nums,numsSize,index+1);
}

好几处错误,我就不一一写了,基本就是思路混乱,判断一个数组中元素重复值的基本思路就是一个一个取出值,并与剩余元素比较,一旦想等就返回真,已经比较过的元素不需要重复比较,然后你看看我的代码体会下。

追问
要求是两个参数
xl35800
推荐于2017-12-16 · TA获得超过3487个赞
知道小有建树答主
回答量:1152
采纳率:74%
帮助的人:311万
展开全部
感觉你写得好混乱

bool cd(int *a, int b)
{
int i=1;
if(b<2)
{
return false;
}
while(i<b)
{
if(*a==*(a+i++))
return true;
}
a++; b--;
return cd(a, b);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tanliantom
2015-11-12 · TA获得超过372个赞
知道小有建树答主
回答量:240
采纳率:83%
帮助的人:99.5万
展开全部

用递归做,两个参数是不够的:

bool containsDuplicate(int* nums, int index ,int numsSize) {
    if(index>=numSize-1) return 0;
    int flag=0;
    for(int i=index+1;i<numsSize;i++){
       if(nums[i]==nums[index]){
           flag=1;
           break;
       }
    }
    return flag||containsDuplicate(nums,index+1,numSize);
 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式