龙空技术网

只出现一次的数字

pythonstory 41

前言:

当前看官们对“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;    }};

标签: #python要求用户输入一些数字输出只出现一次的数字