1. 程式人生 > >【劍指offer】數組中只出現一次的數字

【劍指offer】數組中只出現一次的數字

com n) nal val boolean code 出現次數 兩個 ash

題目:一個整型數組裏除了兩個數字之外,其他的數字都出現了偶數次。請寫程序找出這兩個只出現一次的數字。

思路1:使用HashMap存上所有的數字,數字作為Key,Value為對應的出現次數。這種做法可以拓展到查找出現N次的數字。時間復雜服為O(N)+O(1) (建立Map的時間以及查找時間)

 1 import java.util.HashMap;
 2 import java.util.Map;
 3 //num1,num2分別為長度為1的數組。傳出參數
 4 //將num1[0],num2[0]設置為返回結果
 5 import java.util.Arrays;
 6 
 7 public class
Solution { 8 public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { 9 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 10 for(Integer i : array){ 11 if(map.containsKey(i)){ 12 map.put(i, map.get(i)+1); 13 }else
{ 14 map.put(i, 1); 15 } 16 } 17 18 boolean flag = false; 19 for(Integer key : map.keySet()){ 20 21 if(map.get(key)==1){ 22 if(flag){ 23 num2[0] = key; 24 break
; 25 } 26 num1[0] = key; 27 flag = true; 28 } 29 } 30 } 31 32 }

思路2:騷操作 https://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811

【劍指offer】數組中只出現一次的數字