LeetCode例题讲解:只出现一次的数字

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

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

示例 1 :

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

示例 2 :

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

示例 3 :

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

首先是大众的方法:

首先遍历整个数组,取出各个数

int singleNumber(int* nums, int numsSize) {
    for(int i = 0; i < numsSize; i++)
    {
        printf("%d\n",nums[i]);
    }
    return 0;
}

之后对其中各个数字出现的个数开始计数

int singleNumber(int* nums, int numsSize) {
    for(int i = 0; i < numsSize; i++)
    {
        int count = 0;
        for(int j = 0; j < numsSize ; j++)
        {
            if(nums[i] == nums[j])
            count++;
        }
        if(count == 1)
        return nums[i];
    }
    return -1;
}

其次则是简单的方法,利用按位异或

按位异或
5 ^ 3 = 6 

//5 二进制表示为 00000101
//3 二进制表示为 00000011
//6 二进制表示为 00000110

a ^ b = b ^ a  a ^ a = 0  

int singleNumber(int* nums, int numsSize) {
    int a = 0;
    for(int i = 0; i < numsSize; i++)
    {
        a ^= nums[i]; 
    }
    return a;
}

相关推荐

  1. LeetCode第136题 出现数字

    2024-05-10 00:30:02       40 阅读
  2. 【技巧】Leetcode 136. 出现数字【中等】

    2024-05-10 00:30:02       19 阅读
  3. [Easy] leetcode-136 出现数字

    2024-05-10 00:30:02       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 00:30:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 00:30:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 00:30:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 00:30:02       20 阅读

热门阅读

  1. 代码随想录训练营Day23:贪心算法1

    2024-05-10 00:30:02       13 阅读
  2. leetcode47-Permutations II

    2024-05-10 00:30:02       12 阅读
  3. 矩阵力学和波动力学

    2024-05-10 00:30:02       14 阅读
  4. IO 5.9号

    IO 5.9号

    2024-05-10 00:30:02      15 阅读
  5. 2024-5-6(Vue)

    2024-05-10 00:30:02       14 阅读
  6. 深度学习学习日记5.8

    2024-05-10 00:30:02       12 阅读
  7. 华为开启telnet两种方式

    2024-05-10 00:30:02       16 阅读
  8. 基于picklerpc的pytorch单算子测试[单算子远程测试]

    2024-05-10 00:30:02       15 阅读
  9. Scala基础学习-循环

    2024-05-10 00:30:02       9 阅读