leetcode刷题(一) —— 只出现一次的数字
作者:互联网
题目:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
普通思考:
两个循环,第一个循环从头到尾,第二个循环检查是否有重复。
class Solution {
public int singleNumber(int[] nums) {
int singleNumber = 0;
for(int i = 0;i<nums.length;i++){
int count = 0;
for(int j = 0;j<nums.length;j++){
if(nums[i]==nums[j]&&(i!=j)){
count++;
break;
}
}
if(count==0){
singleNumber = nums[i];
}
}
return singleNumber;
}
}
结果:
异或方法:
异或运算,相异为真,相同为假,所以 a ^ a = 0 ;0 ^ a = a
因为异或运算 满足交换律 a ^ b ^ a = a ^ a ^ b = b
class Solution {
public int singleNumber(int[] nums) {
int singleNumber = 0;
for(int i = 0;i<nums.length;i++){
singleNumber = singleNumber^nums[i];
}
return singleNumber;
}
}
结果:
标签:count,return,数字,nums,int,异或,singleNumber,leetcode,刷题 来源: https://blog.csdn.net/qq_40732959/article/details/122030042