給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
說明:
你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
/**
* 我能想到的第乙個方法就是把所有的值當成 map 的key,出現的次數當成value
* 最後次數為 1 的就是那個單個的
*/public int singlenumber(int nums) else
}return map.entryset().stream().filter(r -> r.getvalue() == 1).findfirst().get().getkey();
}/**
* 看到重複元素,本能的想到 set,可以考慮把出現兩次的數字先新增到 set 裡面,然後再移除掉,
* 最後剩下乙個就是單個的值。
*/public int singlenumber1(int nums)
}return set.iterator().next();
}/**
* 異或(^) 運算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1)
* 除了其中乙個數字是一次外,其他的都是兩次,相同的值異或結果為0,用0異或所有的值,
* 最終結果就是那個單個的值。
*/public int singlenumber2(int nums)
return r;
}
演算法 陣列中只出現了一次的數字
乙個整型陣列裡除了兩個數字之外,其他的數字都是出現了兩次。請寫出程式找出這兩個只出現了一次的數字。要求時間複雜度是o n 空間複雜度是o 1 tip1 如果該陣列a中只有乙個數字出現了一次,其他的數字都出現了兩次,那麼求出該數字就很簡單,其值就是 a 0 a 1 a n 1 因此就需要想辦法,將問題...
初級演算法 陣列 五 只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。示例 輸入 2,2,1 輸出 1 include include include using namespace std class solution return nums nums.size 1...
陣列中只出現一次的數字
何海濤 劍指offer 名企面試官精講典型程式設計題 九度oj 題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。輸入 每個測試案例包括兩行 第一行包含乙個整數n,表示陣列大小。2 n 10 6。第二行包含n個整數,表示陣列元素,元素均為int。輸...