| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 剑指offer 数组中数字出现的次数 -> 正文阅读 |
|
[数据结构与算法]剑指offer 数组中数字出现的次数 |
前言剑指offer的第56-I 题,看了LeetCode的官方题解后才写出来,在记录一下写题时的思路以及看答案的困惑之处 一、题目表述一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1:
示例 2:
二、解题思路解题的思路来自于LeetCode的官方题解,即分组异或的办法。将数组的元素分为两组,分别异或得到只出现一次的数,分组有两个条件需要满足,即
设在数组中只出现了一次的两个数字为
x
x
x 和
y
y
y,其他元素都出现了两次,那么数组中所有元素异或的结果就等于
x
x
x 和
y
y
y相异或的结果,不妨将其记为
t
a
r
g
e
t
_
x
o
r
target\_xor
target_xor,
t
a
r
g
e
t
_
x
o
r
target\_xor
target_xor除了是
x
x
x 和
y
y
y异或的结果以外,还有更多的信息。将
t
a
r
g
e
t
_
x
o
r
target\_xor
target_xor写成二进制表示时,则其为0的位,
x
x
x 和
y
y
y的对应位相同,为1的位,则
x
x
x 和
y
y
y的对应位不同。 解题代码
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 9:53:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |