剑指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 次
全部评论

相关推荐

小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务