判斷陣列中的重複元素

2021-12-29 19:45:48 字數 644 閱讀 5274

問題,有乙個n+1個元素的陣列,包含1到n的n個數,外加乙個重複元素,將這個重複元素找出。

方法一:使用置換法,由於下標是從0開始,如果nums[i]==i+1,說明元素是放在正確的位置,繼續判斷。如果nums[i] == nums[nums[i]-1],說明nums[i]就是重複元素,是要求找到的,否則就轉換nums[i]和nums[nums[i]-1]

**如下:

class solution

if (nums[i] == nums[nums[i] - 1])

int tmp = nums[i];

nums[i] = nums[tmp - 1];

nums[tmp - 1] = tmp;

}return 0;

}}方法二:取反法,在遍歷的過程中,將abs(nums[i])-1位置處的資料取反,在取反之前,如果為負,說明這個數是重複的

**如下:

class solution

return 0;

}}方法三:用floyd判圈法。因為有重複元素,最終會是乙個環。這種方法好處是不會修改資料元素

**如下:class solution

fast = 0;

while (slow != fast)

return slow;}}

找陣列中重複元素

題目 乙個大小為n的陣列,裡面的數都屬於範圍 0,n 1 有不確定的重複元素,找到至少乙個重複元素,要求o 1 空間和o n 時間。分析 這個題目要求用 o n 的時間複雜度,這意味著只能遍歷陣列一次。同時還要尋找重複元素,很容易想到建立雜湊表來完成,遍歷陣列時將每個元素對映到雜湊表中,如果雜湊表中...

去除陣列中重複元素

統計乙個一維陣列中的各個元素的個數,然後刪除多出來的重複元素,並輸出結果。例如 1,2,2,2,3,3,3,3,3 1,2,3 將重複元素的列表中的重複元素進行統計,並將統計結果放在dictionary中,key為元素,value為該元素的個數 然後通過for獲取key,得到乙個新的列表,就是沒有重...

返回陣列中不重複元素

本文內容為學習了司徒正美的部落格 後整理總結部分內容而得 總結兩種思路的解決方式。解決思路一 如下 var ret span span strong span b var norepeat function array else return set.replace g,split alert no...