1. 程式人生 > >LeetCode268:缺失數字

LeetCode268:缺失數字

給定一個包含 0, 1, 2, ..., n 中 n 個數的序列,找出 0 .. n 中沒有出現在序列中的那個數。

示例 1:

輸入: [3,0,1] 輸出: 2

示例 2:

輸入: [9,6,4,2,3,5,7,0,1]
輸出: 8

說明:
你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?

解析:

        該題目雖然是一個簡單題目,但是也不太好想,且時間複雜度和空間複雜度有一定的要求。根據題目的規律,這個題目可以通過計算nums中所有資料的和與0到n的和進行相減,就可以得出缺失的數字。

程式碼:

int missingNumber(vector<int>& nums) 
{
	int size = nums.size();
	int sumOfNums = 0;
	for (int i = 0; i < nums.size(); i++)
	{
		sumOfNums += nums[i];

	}
	int sumOf0ToN = 0;
	for (int i = 0; i <= size; i++)
	{
		sumOf0ToN += i;
	}
	return sumOf0ToN - sumOfNums;
}