1.有一組資料,只有乙個數字是出現一次,其他是兩次,請找出這個數字。
public
class
test
;int ret=0;
for(
int i =
0;i < num.length;i++
) system.out.
println
(ret);}
}
解題關鍵:a.0與任何數字進行異或運算結果都是那個數本身;
b.相同數字異獲結果是0;
c.a^b的結果在和a異或結果還是a;
通過0與陣列裡第乙個數異獲進入陣列中,然後和其餘數字進行異獲,由於乙個數字出現了一次,其餘數字出現了兩次,所以最後結果必然是0和那個出現一次的數字進行異獲,結果為出現一次的數字,直接輸出即可。
2.給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。
public
class
test
;int a =
singlenumber
(nums)
; system.out.
println
(a);
}public
static
intsinglenumber
(int
nums)
flag <<=1;
}}int ret =0;
for(
int i =
0;i <
32;i++
)return ret;
}
3.給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其餘所有元素均出現兩次。 找出只出現一次的那兩個元素。
public
class
test
;int
single =
newint[2
];single =
singlenumbers
(nums)
; system.out.
println
(single[0]
);system.out.
println
(single[1]
);}public
static
int[
]singlenumbers
(int
nums)
;int a =0;
for(
int num:nums)
int b = a &
(-a)
;for
(int num:nums)
else
}return ret;
}}
位運算 只出現一次的的數字
異或的兩個值 相同為假,不同為真 交換兩個整數的值時可以不用第三個引數a a b a b b b a b a乙個只出現一次的數字。乙個整型陣列裡除了乙個數字之外,其他的數字都出現了偶數次。請寫程式找出這個只出現一次的數字。int num 0 if array.length 0 return num ...
位運算 只出現一次的的數字
異或的兩個值 相同為假,不同為真 交換兩個整數的值時可以不用第三個引數a a b a b b b a b a乙個只出現一次的數字。乙個整型陣列裡除了乙個數字之外,其他的數字都出現了偶數次。請寫程式找出這個只出現一次的數字。int num 0 if array.length 0 return num ...
位運算 只出現一次的數字III
給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其餘所有元素均出現兩次。找出只出現一次的那兩個元素。示例 輸入 1,2,1,3,2,5 輸出 3,5 注意 結果輸出的順序並不重要,對於上面的例子,5,3 也是正確答案。你的演算法應該具有線性時間複雜度。你能否僅使用常數空間複雜度來實現?首先...