找出陣列中不重複的數 Java

2021-07-25 21:33:18 字數 976 閱讀 1608

這個問題是我在乙個面經裡面看到的,沒有問題的具體描述,所以我做了如下設想:

1.陣列是整數陣列

(1)不重複的數字只有乙個,那麼問題就很簡單了,就退化成劍指offer上面的乙個原題了,解決辦法就是遍歷陣列,異或每乙個數,最後剩下的就是那個唯一不重複的數,**如下:

public static int numberof1(int arr) 

}return res;

}

(2)不重複的數字有兩個,劍指offer上面也有「找出陣列中只出現了一次的兩個數」,解決辦法是先遍歷一遍陣列,異或得到乙個數n,這個數就是只出現一次的那兩個數異或的結果,然後找到n最低為1的位(假設是m位),再次遍歷陣列,按m位為1和為0將陣列分為兩個陣列,此時只出現一次的兩個數就被分到了不同的組,然後對每個組按照(1)的方法找出來就可以了,**如下:

public static void getthetwo(int arr,int num1,int num2)

int index = findfirstone(tmp);

for(int i = 0; i < len; i++)else

} }public static int findfirstone(int n)

return i;

} public static boolean isone(int num,int index)

(3)重複的數字大於兩個

**如下:

public static arraylistgetmethod_4(int array)

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

return '#';

}

對於任意多個只出現一次的字元,只需遍歷完hashtable,找出所有出現次數為1的字元就可以,**就略了。

找出陣列重複的數

1 在乙個長度為 n 的陣列裡的所有數字都在 0 n 1 的範圍內,找出任意乙個重複的數。簡明思路 按照題目要求,如果這個陣列裡面的數恰好沒有重複的數,則陣列下標跟對應的值相等。否則,當掃瞄到下標為 i 的數字時,比較這個下標的值 m 是不是等於 i 如果是,說明這個值就在它對應的下標下,繼續掃瞄 ...

287 找出陣列中重複的數

交換法主要思想是通過交換陣列元素,使得陣列上的元素在正確的位置上。遍歷陣列,如果第 i 位上的元素不是 i 1,那麼一直交換第 i 位和 nums i 1 位置上的元素。public static list test1 int nums list list newlist for int i 0 i...

找出陣列中是否有重複的數

2010 09 09 23 03 59 分類 c c 標籤 c 字型大小大中小 訂閱 陣列a n 1至n 1這n 1個數存放在a n 中,其中某個數重複一次。寫乙個函式,找出被重複的數字。時間複雜度必須為o n 函式原型 int do dup int a,int n 假金條的數學思想 此演算法題借鑑...