1数组中重复的数字-面试题目3
題外話:找算法,在線編程在面試中占比50%。
聽說上面的題外話,依舊重拾艱難困苦之心,翻開劍指offer按照題目類型以及隨機抽取,還是決定開始好好的看看劍指offer的在線編程66道題。沒有信心的跟我一起做下去,歡迎加入古月家族,也可以一起約定每天做那兩道題,一起克服這個編程關(guān)。 當(dāng)然更歡迎,高手糾正以及指導(dǎo),嘿嘿。
數(shù)組中重復(fù)的數(shù)字-面試題目3
題目要求:一個數(shù)組長度為n, 數(shù)字為0到n-1的數(shù)字,判斷數(shù)組中是否存在重復(fù)的數(shù)字。
1第一種,暴力法,按照最簡單的思路就是對數(shù)據(jù)進行排序,然后查找重復(fù)的數(shù)字就很簡單的問題的啦。
2 第二種:就是哈希表,利用索引值即位置,以及對應(yīng)位置上的值是否相等去判斷數(shù)組是否存在重復(fù)的數(shù)字。
先假設(shè)數(shù)組為numbers。我覺的在數(shù)組中主要的三個因素就是: 位置 i, 對應(yīng)位置元素numbers[i],以及有可能鳩占鵲巢的numbers[numbers[i]].
SoSoSoSo!第一步就是判斷是否每個元素是否各司其職,即 i==numbers[i].
如果上述等式不成立,則需要將這些換回到原來的位置。
因此,這就涉及到numbers[i]和numbers[numbers[i]] 兩者之間的pk,判斷兩者是否存在爭奪,也許就是沒有關(guān)系。
第一步,即是判斷兩者是否相等,numbers[i] == numbers[numbers[i]] 。如果兩者相等,將二者之一的值保留,并輸出bool值 true。
第二步: 如果兩者不相等,則需要將兩者進行交換。swap (numbers[i] , numbers[numbers[i]).
\
答案:
class Solution {
public:
bool duplicate(int numbers[], int length, int* duplication) {
if(numbers == nullptr || length <= 0)
return false;
};
總結(jié)
以上是生活随笔為你收集整理的1数组中重复的数字-面试题目3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: :批量制作档案表,要从excel表格中将
- 下一篇: 干货 | 搞定用户画像只需5个步骤