續找出陣列中的重複數字

2021-10-04 13:21:32 字數 744 閱讀 2580

續上篇找出陣列中的重複數字

**方法二:**利用合適的演算法進行計算。

首先先想到這個規律,就是如果陣列是有序的並且元素不重複,那麼第i個位置的元素應該是i。如果第i個位置的元素不是i,就說明陣列中是存在重複數字的。

利用下面的演算法:

比較i和arr[ i ],如果相等,說明i(arr[ i ])在正確的位置;如果不相等,就比較arr[ i ]和arr[arr[ i ]],如果這兩個值相等,說明找到重複數字arr[ i ];如果不相等,就需要把arr[ i ]放到應該放的位置,即交換arr[ i ]和arr[arr[ i ]]的值。

下面是**部分:

public

class

arrrept

; system.out.

println

(arrrept

(arr));

}//實現找到陣列中重複元素的方法

public

static

boolean

arrrept

(int

arr)

for(

int j=

0;jfor(

int i=

0;i)int m = arr[i];if

(arr[m]

==m)

else

}return

true;}

}

找出陣列中重複數字

題目 在乙個長度為n的陣列裡所有數字都在 0 n 1 的範圍內,找到陣列中的重複數字。思路 看到問題之後的直接想法是將輸入的陣列排序,排序後找到重複數字是一件很容易的事情。可是排序乙個長度為n的陣列需要 o nlogn 的時間。為了降低時間複雜度,考慮用雜湊表來解決。方案就是先建立乙個和陣列等長的雜...

陣列中重複數字

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

陣列中的重複數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。1 排序 將陣列排序,然後掃瞄排序後的陣列即可。時間複雜度 o nl...