力扣136、只出现一次的数字(简单)

1 题目描述

图1 题目描述

2 题目解读

        在非空整数数组nums中,有一个元素只出现了一次,其余元素均出现两次。要求找出那个只出现一次的元素。

3 解法一:位运算

        位运算,是一种非常简便的方法。

3.1 解题思路

        异或运算,有以下三个性质。

        (1)任何数和0做异或运算,结果仍然是原来的数;

        (2)任何数和其自身做异或运算,结果是0;

        (3)异或运算满足交换律和结合律。

3.2 设计代码

#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ret = 0;
        for (auto e : nums) ret ^= e;
        return ret;
    }
};
int main()
{
    vector<int> nums{ 2,2,3,1,3 };
    Solution s;
    int ans = s.singleNumber(nums);
    cout << ans << endl;
    return 0;
}

3.3 复杂度分析

  • 时间复杂度:O(n)。for循环枚举了一遍数组元素。
  • 空间复杂度:O(1)。没有使用额外数组空间。

3.4 提交结果

图2 提交结果

4 解题心得

  • 位运算,是一种非常简洁且有效的运算方法。
  • 异或运算,有三条性质。
  • 高效的算法,对于计算机科学来说非常重要。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 06:00:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 06:00:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 06:00:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 06:00:06       20 阅读

热门阅读

  1. Session

    Session

    2024-01-31 06:00:06      25 阅读
  2. C语言:计算任意年份及月份的天数

    2024-01-31 06:00:06       40 阅读
  3. Linux系统MySQL重置root密码

    2024-01-31 06:00:06       28 阅读
  4. 代码随想录算法训练营第17天

    2024-01-31 06:00:06       35 阅读
  5. react的withRouter高阶组件:

    2024-01-31 06:00:06       34 阅读
  6. 力扣0111——二叉树的最小深度

    2024-01-31 06:00:06       42 阅读
  7. ClickHouse(24)ClickHouse集成mongodb表引擎详细解析

    2024-01-31 06:00:06       37 阅读