剑指offer:数组中重复的数字

class Solution {
public:
    bool duplicate(int numbers[], int length, int* duplication)
     {
         // 检查数组边界:空数组/长度小于0
         if(numbers == nullptr || length <= 0)
             return false;

         // 检查数组元素:数组元素不符合题干
         for(int i=0; i<length;++i)
         {
             if(numbers[i]<0 || numbers[i]>length-1)
                 return false;
         }

         /* 找出任意一个重复元素*/
         for(int i=0;i<length;i++)
         {
             while(numbers[i]!=i)
             {
                 // 查找重复元素
                 if(numbers[i] != numbers[numbers[i]])
                 {
                     int temp = numbers[i];
                     numbers[i] = numbers[temp];
                     numbers[temp] = temp;
                 }
                 else
                 {
                     *duplication = numbers[i];
                     return true;
                 }

             }
         }

         return false;
    }
};
2020-04-22
在牛客打卡13天,今天学习:刷题 2 道/代码提交 2 次
全部评论

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务