zoukankan      html  css  js  c++  java
  • 剑指offer-在一维数组中找重复出现的数。

    描述:

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

    思路:

    1.用哈希表记录数字是否出现过,需要额外空间。
    2. 每个数都在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;
    }
    
    
  • 相关阅读:
    OCR中表格识别及WORD生成
    太阳能跟踪系统
    QA300太阳能移动电源
    OCR之表格识别
    2012112
    2012123
    2012121
    2011101
    201191
    2011828
  • 原文地址:https://www.cnblogs.com/void-lambda/p/12465174.html
Copyright © 2011-2022 走看看