在乙個長度為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 因為陣列中...