当前位置: 首页 > article >正文

LeetCode136只出现一次的数字I

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

看到这个题第一想法应该是使用map记录数字及数字出现的次数,如果原数组长度为n,则map的记录条数就是 1 + (n / 2),则空间复杂度为O(n)

这个题的目的是让我们使用位运算的"^"(异或)运算。

如图所示计算的是:9 ^ 13 ^ 13

计算所得结果是 9,由此我们可以知道一个数与两个相同的数异或结果还是它本身,而 0 与 x(任何数)异或运算就是 x。

于是我们可以初始化一个变量为 0,然后遍历数组进行异或运算,就能得到最终结果

代码实现:

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

    return res;
}


http://www.kler.cn/a/383134.html

相关文章:

  • VSCode 插件开发实战(七):插件支持了哪些事件,以及如何利用和监听这些事件
  • springboot/ssm社区助老志愿者服务平台Java代码编写web志愿捐赠活动项目
  • vulnhub靶场-matrix-breakout-2-morpheus攻略(截止至获取shell)
  • 使用 perf 工具进行性能分析
  • 灵当CRM getMyAmbassador Sql注入漏洞复现(附脚本)
  • acme ssl证书自动续签 nginx
  • Javaweb选课系统-开源计划-起源-001-完全免费开源
  • [实战-11] FlinkSql 设置时区对TIMESTAMP和TIMESTAMP_LTZ的影响
  • linux node vue3 部署手册
  • 基于YOLO11/v10/v8/v5深度学习的煤矿传送带异物检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • 信息学科平台系统设计与实现:Spring Boot框架精讲
  • 【H2O2|全栈】JS进阶知识(四)Ajax
  • 3种最难学习和最容易学习的 3 种编程语言
  • 微服务架构面试内容整理-Zuul
  • 打印等边三角形和直角三角形(用循环)C语言
  • 将vscode的终端改为cygwin terminal
  • 杨中科 .Net Core 笔记 DI 依赖注入
  • 【时间之外】IT人求职和创业应知【27】
  • PC端查看历史消息,鼠标向上滚动加载数据时页面停留在上次查看的位置
  • 使用k8s管理应用以及java案例
  • Go API 多种响应的规范化处理和简化策略
  • 晚霞视频素材哪里下载 高清无水印素材推荐平台
  • 在Scrapy爬虫中应用Crawlera进行反爬虫策略
  • 背包九讲——背包问题求具体方案
  • java.lang.NoClassDefFoundError: kotlin/jvm/JvmInline
  • 无root权限在Linux虚拟环境安装指定版本python