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

2021-10-08 07:16:42 字數 846 閱讀 9604

題目描述

找出陣列中重複的數字。

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

解題思路

1、需要注意的點:陣列 nums 裡的所有數字都在 0~n-1 的範圍內

2、根據不同的時間複雜度和空間複雜度,這道題會有不同的解法。

(1)最簡單的辦法,先將陣列排好序,再從頭到尾遍歷陣列。

(2)時間複雜度為o(n),空間複雜度為o(n),使用集合來解決這個問題,需要額外空間。

(3)時間複雜度為o(n), 空間複雜度為o(1),第三種解法主要根據題目規律來解決問題的。題目中提到陣列 nums 裡的所有數字都在 0~n-1 的範圍內,可以理解為,如果這個陣列中沒有重複的數字,陣列排序後,數字i的索引值為i。

**1

class

solution

return-1;}}

**2
class

solution

//將nums[i]這個數放到陣列的索引值為nums[i]這個地方

temp = nums[i]

; nums[i]

= nums[temp]

; nums[temp]

= temp;}}

return-1;}}

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