CS-Wiki CS-Wiki
Home
知识体系总览
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • MySQL
  • Redis
  • 设计模式
  • Java 基础
  • Java 集合
  • Java 并发
  • Java 虚拟机
  • Spring
  • Kafka
  • 校招扫盲
  • 项目推荐
  • 唠唠嗑儿
  • 读书笔记
归档
GitHub (opens new window)
Home
知识体系总览
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • MySQL
  • Redis
  • 设计模式
  • Java 基础
  • Java 集合
  • Java 并发
  • Java 虚拟机
  • Spring
  • Kafka
  • 校招扫盲
  • 项目推荐
  • 唠唠嗑儿
  • 读书笔记
归档
GitHub (opens new window)
  • 刷题模板汇总
  • 一些刷题小技巧
  • 整数 and 位运算

    • 整数理论基础
    • 整数除法
    • 二进制加法
    • 剑指 Offer 15 - 二进制中 1 的个数
    • 前 n 个数字二进制中 1 的个数
    • 只出现一次的数字
      • 📃 题目描述
      • 🔔 解题思路
      • 💥 复杂度分析
    • 只出现一次的数字II
    • 只出现一次的数字 III
    • 剑指 Offer 39 - 数组中出现次数超过一半的数字
    • 剑指 Offer 16 - 数值的整数次方:快速幂模板
    • 剑指 Offer 43 - 1~n 整数中 1 出现的次数
  • 数组

  • 链表

  • 哈希表

  • 字符串

  • 栈

  • 队列

  • 二叉树

  • 前缀树

  • 二分查找

  • 双指针法

  • 区间求和问题

  • 排序

  • 回溯算法

  • 贪心算法

  • 动态规划

  • 图

  • 数学

  • 自动机

  • 海量数据和空间限制

  • 05-数据结构与算法
  • 整数 and 位运算
小牛肉
2022-04-01
目录

只出现一次的数字

# 📃 题目描述

题目链接:

  • 136. 只出现一次的数字 - 力扣(LeetCode) (leetcode-cn.com) (opens new window)

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

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

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

示例 2:

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

# 🔔 解题思路

算是面试高频题了

主要利用二进制中异或的特征

0 ^ 1 = 1

0 ^ 0 = 0

也就是,二进制中,0 和任意数的异或结果都是任意数本身

所以,两个相同的二进制数进行异或,就是 0

已知数组中除了某个元素只出现一次以外,其余每个元素均出现两次

依次执行异或操作,最终的出来的结果就是那个只出现一次的元素

class Solution {
    public int singleNumber(int[] nums) {
        int res = nums[0];
        for (int i = 1; i < nums.length; i ++) {
            res ^= nums[i];
        }

        return res;
    }
}

# 💥 复杂度分析

  • 空间复杂度:O(1)
  • 时间复杂度:O(N)

🎁 公众号

各位小伙伴大家好呀,叫我小牛肉就行,目前在读东南大学硕士,上方扫码关注公众号「飞天小牛肉」,与你分享我的成长历程与技术感悟~

帮助小牛肉改善此页面 (opens new window)
Last Updated: 2023/02/16, 11:27:10
前 n 个数字二进制中 1 的个数
只出现一次的数字II

← 前 n 个数字二进制中 1 的个数 只出现一次的数字II→

最近更新
01
关于编程满天星
02
让我来告诉你 Java 程序员是怎么一步一步从入行到被裁的
06-08
03
Vision Pro,未来已来
06-06
更多文章>
Theme by Vdoing | Copyright © 2019-2023 飞天小牛肉 | 皖ICP备2022008966号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式