您的位置:首页 > 其它

01 Find the odd int(找到出现次数为奇数的int)

2016-11-18 15:59 183 查看

Description:

Given an array, find the int that appears an odd number of times.

There will always be only one integer that appears an odd number of times.

public class FindOdd {
public static int findIt(int[] A) {
return xor;
}
}


解法一

一般的解法,笨拙的方法,使用Map的性质,先遍历每一个元素,将元素作为key,value为它出现的次数,然后再使用Entry的方式遍历,求得value为奇数的entry的key,这个key就是需要的值

解法二

巧解(我还需要继续学习提升自己的姿势水平).方法利用了异或的性质(相同的数字异或结果为0, a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;).所以将集合中所有中数字进行异或就可以了,所有的成对的元素异或的结果为0,只剩下最后一个出现次数为奇数的元素.

代码如下:

public class FindOdd {
public static int findIt(int[] A) {
int xor = 0;
for (int i = 0; i < A.length; i++) {
xor ^= A[i];
}
return xor;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codewars 算法
相关文章推荐