找出陣列中重複的數字

2021-10-24 14:00:45 字數 888 閱讀 2167

一:描述

在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內,陣列中的某些陣列是重複的,但是不知道重複了多少個,也不知道某個數字複查了幾次。請找出陣列中任意乙個重複的數字。

例如:如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或3

二:解法

排序後,順序掃瞄,判斷是否有重複,時間複雜度為 0(n²)

利用雜湊表,遍歷陣列,如果雜湊表中沒有該元素,則存入雜湊表中,否則返回重複的元素。時間複雜度為 0(n),空間複雜度為 0(n)

長度為 n,元素的數值範圍也為 n,如果沒有重複元素,那麼陣列每個下標對應的值與下標相等。

從頭到尾遍歷陣列,當掃瞄到下標 i 的數字 nums[i]:

三:示例

public

class

solution

for(

int e : numbers)

}for

(int i =

0; i < length;

++i)

swap

(numbers, i, numbers[i]);

}}return

false;}

private

void

swap

(int

numbers,

int i,

int j)

}

四:測試用例

長度為 n 的陣列中包含乙個或多個重複的數字。

陣列中不包含重複的數字。

無效測試輸入用例(輸入空指標;長度為 n 的陣列中包含 0~n-1 之外的數字)。

找出陣列中重複的數字

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

找出陣列中重複的數字

給定乙個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。注意 如果某些數字不在 0 n 1 的範圍內,或陣列中不包含重複數字,則返回 1 給定 nums 2,3...

找出陣列中重複的數字

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