【剑指offer】面试题56 - I:数组中数字出现的次数 I
一個整型數組 nums 里除兩個數字之外,其他數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。要求時間復雜度是O(n),空間復雜度是O(1)。
?
示例 1:
輸入:nums = [4,1,4,6]
輸出:[1,6] 或 [6,1]
示例 2:
輸入:nums = [1,2,10,4,1,4,3,3]
輸出:[2,10] 或 [10,2]
?
限制:
2 <= nums <= 10000
代碼:
class?Solution?{
????public?int[]?singleNumbers(int[]?nums)?{
????????int?result=0;
????????for(int?i=0;i<nums.length;i++)
????????{
????????????result?^=nums[i];
????????}
????????int?x?=?1;
????????while((result&x)==0)
????????{
????????????x?<<=1;
????????}
????????int?arr[]?=?new?int[2];
????????for(int?i=0;i<nums.length;i++)
????????{
????????????if((nums[i]&x)==0)
????????????{
????????????????arr[0]^=nums[i];
????????????}
????????????else
????????????{
????????????????arr[1]^=nums[i];
????????????}
????????}
????????return?arr;
????}
}
總結
以上是生活随笔為你收集整理的【剑指offer】面试题56 - I:数组中数字出现的次数 I的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--239. 滑动窗口最
- 下一篇: selectByExample和sele