一.解法
https://leetcode-cn.com/problems/single-number/
要點(diǎn):異或
Python,C++,Java都用了相同的異或法,從answer=nums[0]開(kāi)始算,再?gòu)膇=1到i=length-1依次算answer^nums[i],得到的就是答案,這是因?yàn)轭}目除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。異或運(yùn)算有以下三個(gè)性質(zhì)。
1.任何數(shù)和 0 做異或運(yùn)算,結(jié)果仍然是原來(lái)的數(shù)
2.任何數(shù)和其自身做異或運(yùn)算,結(jié)果是 0
3.異或運(yùn)算滿足交換律和結(jié)合律
二.Python實(shí)現(xiàn)
class Solution:
def singleNumber(self, nums: List[int]) -> int:
answer=nums[0]
for i in range(1,len(nums)):
answer=answer^nums[i]
return answer
三.C++實(shí)現(xiàn)
class Solution {
public:
int singleNumber(vector<int>& nums) {
int answer=nums[0];
for(int i=1;i<nums.size();i++){
answer=answer^nums[i];
}
return answer;
}
};
四.java實(shí)現(xiàn)
class Solution {
public int singleNumber(int[] nums) {
int answer=nums[0];
for(int i=1;i<nums.length;i++){
answer=answer^nums[i];
}
return answer;
}
}