linux-安裝zookeeper及相關操作
阿新 • • 發佈:2020-09-07
題目描述:
找出陣列中重複的數字。
在一個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意一個重複的數字。
示例 1:
輸入: [2, 3, 1, 0, 2, 5, 3] 輸出:2 或 3
限制:
2 <= n <= 100000
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof
1、暴力求解
- 時間複雜度是 O(n^2)
- 空間複雜度是 O(1)
2、藉助HashSet
- 時間複雜度是 O(n)
- 空間複雜度是 O(n)
將陣列中的元素儲存到HashSet集合中,藉助於HashSet集合的方法判斷元素是否重複,集合中存在的話就返回該元素,不存在的話就返回-1.
3、陣列代替雜湊表
將nums陣列中儲存的元素的大小作為bucket陣列的下標,然後將nums陣列的下標儲存到bucket陣列中。也就是說如果nums陣列中存在相同的元素就會在bucket中存在“碰撞”,
時間複雜度和空間複雜度都是O(n)
4、最優解法
(1)陣列中沒有重複元素的
陣列初始化:
交換陣列中的元素:
(2)陣列中存在重複元素的情況