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

一、题目描述

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

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

输入:nums = [2,2,1]
输出:1

输入:nums = [4,1,2,1,2]
输出:4

输入:nums = [1]
输出:1

二、题目解析

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

1、异或概念及特点

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

任何数和 0 做异或运算

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

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

2、代码

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        //其余元素均只出现两次
        int res = 0;
        for (int num: nums) {
            res = num ^ res;
        }
        return res;
    }
};

相关推荐

  1. 136.出现数字

    2024-05-13 17:08:04       33 阅读
  2. LeetCode第136出现数字

    2024-05-13 17:08:04       67 阅读
  3. 【技巧】Leetcode 136. 出现数字【中等】

    2024-05-13 17:08:04       37 阅读
  4. [Easy] leetcode-136 出现数字

    2024-05-13 17:08:04       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 17:08:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 17:08:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 17:08:04       82 阅读
  4. Python语言-面向对象

    2024-05-13 17:08:04       91 阅读

热门阅读

  1. python面向对象

    2024-05-13 17:08:04       27 阅读
  2. Vue的生命周期函数有哪些?

    2024-05-13 17:08:04       33 阅读
  3. Linux呈现数据

    2024-05-13 17:08:04       34 阅读
  4. Linux的内核态和用户态

    2024-05-13 17:08:04       26 阅读
  5. vue3+ts 获取input 输入框中的值

    2024-05-13 17:08:04       35 阅读
  6. vue的跳转传参

    2024-05-13 17:08:04       30 阅读
  7. scala案例-- 九九乘法表

    2024-05-13 17:08:04       33 阅读
  8. Makefile解析(ARM LINLON V5/V7 VPU firmware tools例)

    2024-05-13 17:08:04       24 阅读
  9. 【C++】CRC-8校验程序,小端格式

    2024-05-13 17:08:04       26 阅读
  10. Spring底层核心原理解析

    2024-05-13 17:08:04       27 阅读
  11. 电商后台的秘密:通过API接口提取商品信息

    2024-05-13 17:08:04       33 阅读