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

2021-10-08 06:22:30 字數 1108 閱讀 7455

題目連線:

找出陣列中重複的數字。

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

輸入:

[2, 3, 1, 0, 2, 5, 3]

輸出:2 或 3

初次思考:

題目給了陣列的數的範圍,在0~n-1之內,這說明可以使用陣列作為陣列的下標,所以可以申請乙個新的統計陣列,該陣列的長度和輸入陣列一樣,以原陣列中的數的值為統計陣列的下標,統計每個數的個數,最後返回數量大於一的數即可。

方法缺陷就是總覺得有點累贅,比如遍歷了兩邊,最後一句的返回值有點辣眼睛。

改變一下思路

總覺得可以在原來的陣列上做點文章:

在原來陣列的基礎上,對數值和陣列下標進行一一對應對映。如果出現遍歷處的值已存在就直接返回。推測該方法比上述時間快是因為continue處減少了遍歷次數。

劍指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 首...