Leetcode 刷題Day1(3/2)
找出數(shù)組中重復(fù)的數(shù)字。
在一個(gè)長(zhǎng)度為 n 的數(shù)組 nums 里的所有數(shù)字都在 0~n-1 的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,但不知道有幾個(gè)數(shù)字重復(fù)了,也不知道每個(gè)數(shù)字重復(fù)了幾次。請(qǐng)找出數(shù)組中任意一個(gè)重復(fù)的數(shù)字。
①set里面找
class?Solution(object):
????def?findRepeatNumber(self,?nums):
????????tmp=set()
????????for?num?in?nums:
????????????if?num?in?tmp:
????????????????return?num
????????????tmp.add(num)
????????return?-1
????
????
????#和今天的題1差不多
????#碎碎念一下……幾個(gè)語(yǔ)言的判斷函數(shù)真的好容易混啊,java用的是contais,py用的是in
????#而且,為什么C++題解中不用set而是map呢,C++不是有set嘛……

②索引,先一一對(duì)應(yīng)【第0個(gè)數(shù)字必須為0這樣,然后找到重復(fù)的】
class?Solution(object):
????def?findRepeatNumber(self,?nums:?List[int])?->int:
????????i=0
????????while?i<len(nums):
????????????if?nums[i]==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
