[leetcode hot 150]第一百三十六题,只出现一次的数字

题目:

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

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

 

 根据题目关于空间、时间复杂度的要求,不能使用简单的遍历数组然后比较方式来解决这个问题,使用位运算。

异或运算。异或运算有一个重要的性质:任何一个数字与自己异或的结果是0

具体步骤如下:

  1. 初始化一个变量 result 为0。

  2. 遍历数组中的每一个元素,并将其与 result 进行异或运算。

  3. 遍历结束后, result 中存储的就是只出现一次的元素,因为成对出现的元素在异或运算中会互相抵消。

  • 时间复杂度: O(n),其中 n 是数组的长度。只需要遍历一次数组。
  • 空间复杂度: O(1),只使用了常量空间来存储结果。

 

public class no_169 {
    public static void main(String[] args) {
        int[] nums = {4, 1, 2, 1, 2};
        System.out.println(singleNumber(nums));
    }

    public static int singleNumber(int[] nums) {
        int re = 0;
        for (int num : nums) {
            re ^= num;
        }
        return re;
    }
}

相关推荐

  1. LeetCode第136 出现数字

    2024-06-06 15:10:06       67 阅读
  2. 「优选算法刷」:出现数字

    2024-06-06 15:10:06       57 阅读
  3. 出现数字 - LeetCode 热 96

    2024-06-06 15:10:06       27 阅读
  4. 出现数字

    2024-06-06 15:10:06       42 阅读

最近更新

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

    2024-06-06 15:10:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 15:10:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 15:10:06       82 阅读
  4. Python语言-面向对象

    2024-06-06 15:10:06       91 阅读

热门阅读

  1. linux学习:进程通信 管道

    2024-06-06 15:10:06       26 阅读
  2. LeetCode # 1070. 产品销售分析 III

    2024-06-06 15:10:06       31 阅读
  3. golang结构与接口方法实现与交互使用示例

    2024-06-06 15:10:06       32 阅读
  4. 设计模式之观察者模式

    2024-06-06 15:10:06       34 阅读
  5. Go语言 一些问题了解

    2024-06-06 15:10:06       31 阅读
  6. BMC压力测试脚本

    2024-06-06 15:10:06       33 阅读
  7. 短剧出海的第一桶金

    2024-06-06 15:10:06       24 阅读
  8. Python怎么睡觉:深入探索Python中的暂停执行机制

    2024-06-06 15:10:06       25 阅读
  9. npm如何发布自己的插件包

    2024-06-06 15:10:06       38 阅读
  10. phpword使用TemplateProcessor对模板进行替换

    2024-06-06 15:10:06       31 阅读
  11. 自动化迁移和更新物体检测XML数据集

    2024-06-06 15:10:06       29 阅读
  12. 03-3.1.2 栈的顺序存储的实现

    2024-06-06 15:10:06       33 阅读