找出陣列中重複的數字

2021-09-22 23:04:45 字數 615 閱讀 4983

給定乙個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0∼n−1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。

注意:如果某些數字不在 0∼n−1 的範圍內,或陣列中不包含重複數字,則返回 -1;

給定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。

返回 2 或 3。

法1:對陣列排序,時間複雜度為o(nlogn)

法2:借助雜湊表,時間複雜度為o(n),空間複雜度為o(n)

法3:對陣列重排。對於長度為n的陣列,所有的數字範圍在0~n-1之間,如果沒有重複的數字,那麼每個下標下對方的數字均和下標相等。從頭遍歷該陣列,當掃瞄到下標為i的數字時,首先看該數字n是否等於i,如果等於i繼續遍歷;如果n不等於i,則與下標為n的數字進行比較,如果相等證明重複直接返回;如果不相等則二者交換,將n放到下標n處,n處原來的數字放到下標i處,繼續將i處的數字比較。

public boolean duplicate(int numbers,int length,int  duplication) else }}

return false;

}

找出陣列中重複的數字

面試題3 一 找出陣列中重複的數字 題目 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。static bool get duplicate num1 std vecto...

找出陣列中重複的數字

在乙個長度為n的陣列中,所有的數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個陣列重複了幾次。請找出陣列中任意乙個重複的數字。例 輸入長度為7的陣列,對應的輸出的重複的數字是2或3。方法1 先排序在查詢 方法2 利用雜湊表 從頭到尾掃瞄每個數字,每掃瞄乙個數...

找出陣列中重複的數字

在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限制 2 n 100000 class soluti...