当前位置:   article > 正文

[Easy] leetcode-136 只出现一次的数字

[Easy] leetcode-136 只出现一次的数字

一、题目描述

        给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

        你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

  1. 输入:nums = [2,2,1]
  2. 输出:1
  3. 输入:nums = [4,1,2,1,2]
  4. 输出:4
  5. 输入:nums = [1]
  6. 输出:1

二、题目解析

        使用位运算的异或运算来解答

1、异或概念及特点

异或:当两个操作数的二进制表示形式的对应位不同时,结果为1,否则结果为0

任何数和 0 做异或运算

任何数和自身做异或运算,结果为 0

异或遵循结合律 a ^ b ^ c = a ^ (b ^ c),同一堆数,不管异或计算顺序如何变化,异或一定是相同结果

2、代码

  1. class Solution {
  2. public:
  3. int singleNumber(vector<int>& nums) {
  4. //其余元素均只出现两次
  5. int res = 0;
  6. for (int num: nums) {
  7. res = num ^ res;
  8. }
  9. return res;
  10. }
  11. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/800701
推荐阅读
相关标签
  

闽ICP备14008679号