劍指offer JZ40 陣列中只出現一次的數字

2021-10-24 11:41:35 字數 804 閱讀 1542

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。

1.借助雜湊表記錄出現數字的頻率和下標,最後遍歷雜湊表查詢,時間複雜度和空間複雜度均為o(n);

#includeclass solution 

else if(n == 2)

unordered_map> m;

m[data[0]] = ;

for(int i = 1; i < n; ++i);

}else

it->second.second++;

}

for(auto it = m.begin(); it != m.end(); ++it)

else

*num2 = data[it->second.first];}}

}};

2.位運算,相同數字異或運算後結果為0,時間複雜度o(n),空間複雜度o(1)

#includeclass solution 

else if(n == 2)

int temp = data[0];

for(int i = 1; i < n; ++i)

int index = 0;//尋找哪一位為1,根據該為是否為1可分為兩組,每一組必然有乙個只出現一次的數

while((temp & 1) == 0)

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

}bool isbit(int num, int index)

};

劍指offer JZ40 陣列中只出現一次的數字

題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。num1,num2分別為長度為1的陣列。傳出引數 將num1 0 num2 0 設定為返回結果 public class solution int mask 1 while k mask 0 for...

劍指 Offer JZ35 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 看下面鏈結吧,最近有些忙,暫時沒時間仔細研究這道題,之後再回來看。96bd6684e04a44eb...

劍指offer JZ35陣列中的逆序對

時間限制 c c 2秒,其他語言4秒 空間限制 c c 32m,其他語言64m 熱度指數 577791 本題知識點 陣列 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p...