陣列中重複的數字

2021-09-12 21:56:29 字數 1973 閱讀 5450

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

分析:可以通過字串索引來查詢,字串的某個值在不同索引出現,說明這個數字在原陣列的不同索引出現,從而判斷是否重複。

* stringbuffer 類的方法

* indexof 是查某個指定的字串在字串首次出現的位置(索引值)

* lastindexof 是從右向左查某個指定的字串在字串中最後一次出現的位置(也就是從後往前查) */

public class solutiontest1 

/*** stringbuffer 類的方法

* indexof 是查某個指定的字串在字串首次出現的位置(索引值)

* lastindexof 是從右向左查某個指定的字串在字串中最後一次出現的位置(也就是從後往前查)

*/for(int j = 0; j < length; j++)

}system.out.println( result);

return result;

}public static void main(string args) ;//num[i]應該是0到 num.length-1 的範圍

方法二、分析題意,長度為n的陣列裡的所有數字都在0到n-1的範圍內

若存在numbers[i]==j ,交換numbers[i]和numbers[numbers[i]]  ,直到numbers[i] == numbers[j]    ,則判斷存在相等的,返回true

例如 num=,num[2]==1,   num[num[2]]==num[1]==1 ,寫作numbers[i] == numbers[numbers[i]]  

//時間o(n), 空間o(1)

public class solution

for(int i = 0; i < length; i++)

//交換numbers[i]和numbers[numbers[i]]

int temp = numbers[i];

numbers[i] = numbers[temp];

numbers[temp] = temp;}}

return false;

}}/* 一開始交換寫錯了寫成了這:

int temp = numbers[i];

numbers[i] = numbers[numbers[i]];

numbers[numbers[i]] = temp;//上一步已經對numbers[i]賦值,這樣寫是錯誤的

於是就錯了...

這就是劍指offer的思路。

*/

方法三、 flag標記,用乙個布林陣列儲存數字的flag,出現一次就標記為true,下次再出現,就可以用判斷語句if(k==true) 直接返回最推薦的方法

//boolean只佔一位,所以還是比較省的

/*public boolean duplicate(int numbers, int length, int duplication)

k[numbers[i]] = true;

}return false;}*/

陣列 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 python 實現 an highlighted block ...

陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道哪幾個 數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如 如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。include iostream using namespace ...

陣列中重複的數字

題目 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。思路 用雜湊表解決的時間複雜度和空間複雜度為o n 因為陣列中...