首页 > 编程语言 > 详细

剑指offer-在一维数组中找重复出现的数。

时间:2020-03-11 20:53:36      阅读:97      评论:0      收藏:0      [点我收藏+]

描述:

数组大小为n,数字都是0-n-1,找数组中重复出现的数。

思路:

1.用哈希表记录数字是否出现过,需要额外空间。

  1. 每个数都在0-n-1间。对数组排序,每个数应该在的下标与它本身的数相同,每个数经历最多两次交换到达应该在的下标。若发现此时位置上有和它一样的数就说明它是重复的。
    不用额外空间。

    代码:

bool FindduplicateInN(int arr[], int len, int& num)
{
    if (arr == NULL || len <= 0)
        return false;
    for (int i = 0; i < len; i++)
    {
        if (arr[i] >= len)
            return false;
    }
    for (int i = 0; i < len; i++)
    {
        
        while (arr[i] != i)
        {
            int j = arr[i];
            if (arr[j] == arr[i])
            {
                num = arr[j];
                return true;
            }
            else
            {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }

        }
    }
    return false;
}

剑指offer-在一维数组中找重复出现的数。

原文:https://www.cnblogs.com/void-lambda/p/12465174.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!