程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 當數組中整形數連續時,求數組中唯一重復的整數

當數組中整形數連續時,求數組中唯一重復的整數

編輯:C++入門知識

在現實生活中,我估計這個問題沒有多大的意義, 但作為你一種方法,可以借鑒,也可以得出一個結論,那就是盡量把數學知識應用於編程之中,算法會完美。         /*********************************************************************************************************************************** 1: 問題描述:給定包含101個元素的數組arr,數組中元素一定屬於[1,100],並且[1,100]之間的每個數都在arr中出現過。 2: 解決方案:分析,數組中有101個元素,如果[1,100]之間的每個數出現一次,那就是100個元素了,剩下的那個元素就是唯一的重復出現的元素。    我們可以通過遍歷arr,得到arr中所有元素的總和,然後既然[1,100]之間的每個數出現一次,那麼我們減去1+2+……+99+100的和,    結果就是我們需要的唯一的重復出現的元素了。時間復雜度是O(n)。 *************************************************************************************************************************************/  

//數組元素遞歸求和
int sum(int a[], int length)
{
	int result = 0;
	if (length == 1)
	{
		result = a[0];
	}
	else
	{
		result = sum(a, length - 1) + a[length - 1];
	}
	return result;
}

//利用等差數列求出1---100的和,然後相減就可以了。
int getrepeated(int a[])
{
	int temp1 = (1 + 100) * 100 /2;
	int temp2 = sum(a, 101);
	return temp2 - temp1;
}

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved