前言:
当前看官们对“python要求用户输入一些数字输出只出现一次的数字”大约比较关切,咱们都想要学习一些“python要求用户输入一些数字输出只出现一次的数字”的相关资讯。那么小编在网上搜集了一些对于“python要求用户输入一些数字输出只出现一次的数字””的相关内容,希望朋友们能喜欢,咱们一起来了解一下吧!给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
1.题目解析
(1)线性时间复杂度:要求代码时间复杂度是O(n);
(2)不使用额外空间:要求代码空间复杂度是O(1);
(3)只有一个元素出现一次,其它元素都是出现两次。
2.知识点
异或定义:两个bit位相等则为false(0),不等则为false(1);
异或性质(xor是异或的计算机符号):
交换律:A xor B = B xor A
归零率:a xor a = 0
恒等率:a xor 0 = a
异或也叫半加运算:其运算法则相当于不带进位的二进制加法。
3.解题思路
根据上述异或性质,可知:数组中所有两个相等元素异或结果都为0,等于只有一个元素与0异或就等于这个元素。
4.代码
class Solution {public: int singleNumber(vector<int>& nums) { if (nums.size() == 0) { return -1; } int num = 0; for (int i : nums) { num ^= i; } return num; }};
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。