(python)劍指Offer 面試題51:數組中重復的數字


問題描述

  在長度為n的數組中,所有的元素都是0到n-1的范圍內。 數組中的某些數字是重復的,但不知道有幾個重復的數字,也不知道重復了幾次,請找出任意重復的數字。 例如,輸入長度為7的數組{2,3,1,0,2,5,3},那么對應的輸出為2或3。

 

解題思路

1、判斷輸入數組有無元素非法 
2、從頭掃到尾,只要當前元素值與下標不同,就做一次判斷,numbers[i]與numbers[numbers[i]],相等就認為找到了重復元素,返回true,否則就交換兩者,繼續循環。直到最后還沒找到認為沒找到重復元素,返回false

 

 

解題代碼(python實現)

#在長度為n的數組中,所有的元素都是0到n-1的范圍內。 數組中的某些數字是重復的,但不知道有幾個重復的數字,
#也不知道重復了幾次,請找出任意重復的數字。 例如,輸入長度為7的數組{2,3,1,0,2,5,3},那么對應的輸出為2或3
def repeat_num(li):
for index, value in enumerate(li):
if index != value:
li[index], li[value] = li[value], li[index]
if index != value and value == li[value]:
return li[index]


li = [0, 1, 2, 3, 4, 6, 4]
print(repeat_num(li))
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM