n範圍內尋找重複數

2021-08-19 08:59:40 字數 1005 閱讀 7235

題目描述:在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。

思路:可以用set直接判斷,時間複雜度為o(n)。但是實際是需要空間複雜度的。另一種很好的方法為使用原陣列作為標誌位,當訪問到乙個數字時,就把下標為該數的數+n,當訪問到乙個大於n的數時,再-n作為當前值,這樣連續訪問,若訪問到某個數對應的下標的數已經大於n,則表示該數已經訪問過。

# -*- coding:utf-8 -*-

class

solution:

# 這裡要特別注意~找到任意重複的乙個值並賦值到duplication[0]

# 函式返回true/false

defduplicate

(self, numbers, duplication):

if(len(numbers) <= 1):

duplication = none

return

false

for i in range(1,len(numbers)):

if(len(set(numbers[:i+1])) != len(numbers[:i+1]) ):

duplication[0] = numbers[i]

return

true

duplication = none

return

false

另一種方法:

int find_dup( int numbers, int

length)    

if (numbers[index] >= length)    

numbers[index] = numbers[index] + length;

}   

return - 1 ; 

}

lucene RangeQuery範圍內搜尋

queryparser可以使用 起始 to 終止 表示式,起始 to 終止 表示式來構造rangequery物件。private term begin,end begin new term pubmonth 201001 end newterm pubmonth 201501 rangequery ...

尋找重複數

出自 leetcode 287,給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2 示例 2 輸入 3,1,3,4,2 輸出 3 我想到一種和...

尋找重複數

leetcode演算法 題目 1.二分查詢 注意題目中的整數範圍1 len 1 假設陣列中的元素已經排好了順序 如果小於等於mid的個數大於mid的值,說明目標值在1 mid中間 如果小於等於mid的個數小於mid的值,說明目標值在mid right中間 class solution return ...