劍指 Offer 03 陣列中重複的數字

2021-10-19 14:11:48 字數 1046 閱讀 9987

找出陣列中重複的數字。

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

示例 1:

輸入:[2, 3, 1, 0, 2, 5, 3]

輸出:2 或 3

限制:

2 <= n <= 100000

方法一:遍歷陣列

由於只需要找出陣列中任意乙個重複的數字,因此遍歷陣列,遇到重複的數字即返回。為了判斷乙個數字是否重複遇到,使用集合儲存已經遇到的數字,如果遇到的乙個數字已經在集合中,則當前的數字是重複數字。

初始化集合為空集合,重複的數字 repeat = -1

遍歷陣列中的每個元素:

將該元素加入集合中,判斷是否新增成功

如果新增失敗,說明該元素已經在集合中,因此該元素是重複元素,將該元素的值賦給 repeat,並結束遍歷

返回 repeat

class

solution

}return ans;

}}

方法二遍歷的同時,可以將值為 i 的元素調整到第 i 個位置上進行求解,如果第 i 位置上已經有乙個值為 i 的元素,就可以知道 i 值重複。

class

solution

swap

(nums,i,nums[i]);

}}return ans;

}public

void

swap

(int

nums,

int a,

int b)

}

劍指offer03 陣列中重複的數字

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

劍指Offer03 陣列中重複的數字

劍指offer典型題整理 爭取做最好的題解 題目描述 在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限...

劍指offer 03陣列中重複的數字

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