陣列中重複的數字

2021-10-12 20:36:55 字數 1598 閱讀 8009

2.1  思路分析

利用雙重for迴圈,兩兩比較,比如第1個數和第2,3,4,...,n個數比較,然後第2個數和第3,4,5,...,n個數比較,第 i 個數和第 i + 1~n個數比較,直到出現重複元素,就返回;

本題陣列的最大長度為10^5,因此當時間複雜度為o(n^2)時,存在超時問題;

2.2  **實現

class solution 

}return 0;

}}

2.3  複雜度分析

3.1  思路分析

雜湊表也有很多種,這裡用hashset比較合適,hashmap也能做,但它涉及到了鍵值對,在這裡只需用用set判斷是否包含重複元素就好;

遍歷陣列,若set中已經包含了某元素,那麼直接返回;

3.2  **實現

class solution 

}return 0;

}}

3.3  複雜度分析

4.1  思路分析

首先將陣列進行排序,然後就遍歷陣列,看看相鄰元素是否有重複的,如果有重複的,就返回這個元素;

4.2  **實現

class solution 

return 0;

}}

4.3  複雜度分析

5.1  思路分析

題目要求陣列中的元素的取值範圍是:0~n-1,比如陣列[2,3,1,0,2,5,3],我們要將陣列各元素值,安排到對應的索引上,比如陣列首元素2對應的索引是0,應該把它安排到索引2上;

這就有了乙個問題,什麼時候需要安排索引呢?我們定義變數 i 來遍歷陣列,當 nums[i] == i時就不需要安排,當nums[i] != i 時需要安排;

那麼另外乙個問題,如何安排索引?比如現在 i = 0,此時 i != nums[i],即0 != 2,需要把 2 放到索引 2 處,故交換的是 2 和 1,2本身就是nums[i],那麼1用什麼表示呢,1 = nums[2] = nums[nums[i]],對,就這樣,交換它們的位置;

遇到重複元素怎麼處理?假設第乙個 2 已結在索引 2 處,現在 i 已經到了第二個 2 的位置,即 i = 4,現在要判斷是不是有兩個 2,首先nums[i] == 2,然後另乙個2 == nums[nums[i]],也就是說當nums[ i] == nums[nums[i]]時,就出現了重複元素,此時,我們返回該元素。

5.2  **實現

class solution 

if(nums[i] == nums[nums[i]]) return nums[i];

while(nums[i] != i)

}return -1;

}}

5.3  複雜度分析

陣列 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 python 實現 an highlighted block ...

陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道哪幾個 數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如 如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。include iostream using namespace ...

陣列中重複的數字

題目 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。思路 用雜湊表解決的時間複雜度和空間複雜度為o n 因為陣列中...