03. 陣列中重複的數字
在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。
輸入:python方法1:[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3
使用內建函式排序
遍歷陣列,判斷nums[i]是否等於nums[i+1]
方法2:class solution:
def findrepeatnumber(self, nums: list[int]) -> int:
nums.sort()
for i in range(len(nums)):
if nums[i] == nums[i+1]:
return nums[i]
建立set集合
遍歷陣列,判斷如果num在set中,return此num;否則將此num存入set中
方法3:因為在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 ~ n-1 的範圍內,說明陣列元素的索引和值是 一對多的關係。所以將將num中每個數字都放到對應索引處,如果原索引處數字等於此數字,證明有相等,直接輸出class solution:
def findrepeatnumber(self, nums: list[int]) -> int:
dic = set()
for i in nums:
if i in dic:
return i
else:
dic.add(i)
知識點:class solution:
def findrepeatnumber(self, nums: list[int]) -> int:
i = 0
while i < len(nums):
if nums[i] == i:
i += 1
continue
if nums[nums[i]] == nums[i]: return nums[i]
nums[nums[i]], nums[i] = nums[i], nums[nums[i]]
return -1
set()集合
賦值交換位置
方法1:
方法2:class
solution
}return-1
;}};
知識點:class
solution
return-1
;}};
unordered_map容器
mapunordered_map
劍指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 首...