劍指 Offer 56 - I. 陣列中數字出現的次數
java:
先把陣列的數字異或在一起tem<相異為1>
找到tem第一個為1的數字<兩個出現一次的數字異或後說明兩個數在這個位置上數字不一樣>
把陣列的數字以這個位置上的數字分類分別異或,最後得到兩個數字
class Solution {
public int[] singleNumbers(int[] nums) {
int tem = 0;
for (int i = 0; i < nums.length; i++) {
tem ^= nums[i];
}
int cmp = 1;
while ((tem & cmp) == 0) {//cmp其他位置都是0,與其他&之後都是0,只有cmp的位置tem是1才!=0
cmp <<= 1;//<<=不是<<
}
int res1 = 0, res2 = 0;
for (int i = 0; i < nums.length; i++) {
if ((nums[i] & cmp) == 0)
res1 ^= nums[i];
else
res2 ^= nums[i];
}
return new int[]{res1, res2};
}
}
相關文章
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- 劍指Offer--陣列中重複的數字陣列
- 每日一題 - 劍指 Offer 53 - I. 在排序陣列中查詢數字 I每日一題排序陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- [劍指offer題解][Java]陣列中出現次數超過一半的數字Java陣列
- Leetcode 劍指 Offer 39. 陣列中出現次數超過一半的數字LeetCode陣列
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- 劍指offer-轉陣列的最小數字-php陣列PHP
- 力扣 - 劍指 Offer 39. 陣列中出現次數超過一半的數字力扣陣列
- 【劍指offer】7.旋轉陣列的最小數字陣列
- 【劍指 Offer】11. 旋轉陣列的最小數字陣列
- 劍指 Offer 11. 旋轉陣列的最小數字陣列
- 劍指 Offer 10- I. 斐波那契數列
- 劍指offer刷題之路--1.陣列中重複的數字陣列
- [劍之offer] 03 陣列中重複的數字陣列
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 劍指offer之列印超過陣列一半的數字陣列
- 統計陣列中各數字(元素)出現的次數陣列
- 劍指Offer-34-把陣列排成最小的數陣列
- 劍指offer——把陣列排成最小的數C++陣列C++
- (python版)《劍指Offer》JZ06:旋轉陣列的最小數字Python陣列
- 找出陣列中第 k 大的數字及其出現次數陣列
- Matlab 統計陣列中各數字(元素)出現的次數Matlab陣列
- 找出陣列中只出現一次的數字陣列
- 陣列中每個陣列元素出現的次數陣列
- 力扣 - 劍指 Offer 45. 把陣列排成最小的數力扣陣列
- 劍指 Offer 44. 數字序列中某一位的數字
- 劍指 offer(1) -- 陣列篇陣列
- 【Algorithm】《劍指offer》面試題32----從1到n整數中1出現的次數Go面試題
- 【劍指offer】二維陣列中的查詢陣列
- JZ-040-陣列中只出現一次的數字陣列
- 劍指Offer-37-陣列中逆序對陣列
- 劍指offer——斐波那契數列
- 【劍指Offer】調整陣列順序使奇數位於偶數前面陣列
- Matlab tabulate統計數字出現的次數,如果陣列中出現0Matlab陣列
- 【劍指offer】【1】二維陣列中的查詢陣列