首页 > 试题广场 >

数组中只出现一次的两个数字

[编程题]数组中只出现一次的两个数字
  • 热度指数:119623 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

数据范围:数组长度 ,数组中每个数的大小
要求:空间复杂度 ,时间复杂度

提示:输出时按非降序排列。
示例1

输入

[1,4,1,6]

输出

[4,6]

说明

返回的结果中较小的数排在前面     
示例2

输入

[1,2,3,3,2,9]

输出

[1,9]
头像 LaN666
发表于 2021-06-23 14:25:01
精华题解 40、数组中只出现一次的两个数字 方法一: 题目给的意思分析之后,很容易想到一种方法,就是用哈希表辅助得到这两个只出现一次的数字。 代码思路: 1、创建一个哈希表 2、当数组元素没有在哈希表中成为key的时候,put进哈希表,当已存在的时候,则remove掉。 3、最后哈希表中剩下的key就是只出现 展开全文
头像 牛客题解官
发表于 2022-04-22 12:23:49
精华题解 题目主要信息: 一个长度为nnn的数字,除了两个数字只出现1次,其余数字都出现2次 要找到这两次只出现一次的数字,还要以非降序输出 举一反三: 学习完本题的思路你可以解决如下题目: BM51. 数组中出现次数超过一半的数字 BM53. 缺失的第一个正整数 方法一:哈希表(推荐使用) 知识点:哈希 展开全文
头像 幸福的火龙果在干饭
发表于 2021-06-22 18:50:30
精华题解 一、题目描述 JZ40数组中只出现一次的两个数字题目大意:一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次,请写程序找出这两个只出现一次的数字注意审题:题目保证有两个数字只出现一次,其余数字出现两次,并且返回的结果中较小的排在前面 二、算法1(排序) 算法思路 1.总体思路:先对数组从小 展开全文
头像 江南好___
发表于 2021-06-23 13:06:14
精华题解 描述 题目描述 一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 示例 输入:[1,4,1,6] 返回值:[4,6] 说明:返回的结果中较小的数排在前面 引言 首先看到这道题,抠字眼: 两个数字只出现一次,其他的数字都出现了两次,两个 “两” 是解 展开全文
头像 堆栈哲学
发表于 2021-07-15 15:02:48
精华题解 解法一:位运算(推荐) 既满足时间复杂度又满足空间复杂度,就要提到位运算中的异或运算 XOR,主要因为异或运算有以下几个特点: 一个数和 0 做 XOR 运算等于本身:a⊕0 = a 一个数和其本身做 XOR 运算等于 0:a⊕a = 0 XOR 运算满***换律和结合律:a⊕b⊕a = (a⊕a 展开全文
头像 未来0116
发表于 2021-07-18 18:06:56
精华题解 一.题目描述Nc75数组中只出现一次的两个数字题目链接:https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8?tpId=188&&tqId=38602&rp=1&ru=/activity/ 展开全文
头像 2019113913
发表于 2021-07-18 15:41:12
精华题解 题意思路:一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 方法一:hash 将数组中所有元素遍历并映射到hash中统计数量,可以使用map保存数字和出现次数。 如果出现次数超过一次则删除数字 最后统计数组中只出现一次的两个数字。 复杂度分析 时间复 展开全文
头像 2019113916
发表于 2021-07-18 19:32:01
精华题解 方法一:暴力 1.结题思路 暴力法统计元素出现次数并输出。 2.解法 暴力,遍历vector,并用map或set统计每个元素的出现次数再找出出现次数为1的数即可。 3.具体代码 vector<int> FindNumsAppearOnce(vector<int>& 展开全文
头像 牛客500979850号
发表于 2021-07-15 14:16:30
精华题解 方法一: 直接使用哈希表,用哈希表的额外内存空间来记住当前数字出现的次数,出现两次的会被删除,只剩下两个出现一次的数字。 代码如下: class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 展开全文
头像 牛欢喜牛牛
发表于 2021-02-26 03:15:45
public class Solution { public void swap(int[] a, int l, int r){ int o = a[l]; a[l]=a[r]; a[r]=o; } public int[] 展开全文
头像 王清楚
发表于 2021-03-25 15:51:12
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。先考虑另一个问题,一个整型数组里除了一个数字之外,其他的数字都出现了两次,那把所有的数据异或起来,异或的结果就是那一个数字。(因为出现过两次的数字异或起来就抵消了) 对于这个题来说,如果把数字全异或起来,最后 展开全文
头像 月关雨辰
发表于 2021-09-14 23:11:16
用异或^可解此题。 但是首先要知道一个知识点,a^b^a = a^a^b = b^a^a =b,这个知识点也就是本题的简单版本:如果数组中除了某一个数字,其他数字都出现了两次,找出该数字。思路就是遍历数组,对每一个数字都求异或,最后得到的值就是要找的数字。 有了该知识点的储备,再来看看本题。本题是要 展开全文
头像 不经历怎么能成长
发表于 2021-03-18 20:40:11
用哈希表统计数字出现的次数。时间复杂度O(n)空间复杂度也为O(n) class Solution { public: vector<int> FindNumsAppearOnce(vector<int>& a) { unordered_ma 展开全文
头像 馒头2020
发表于 2021-03-16 12:01:53
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 示例 输入 [1,4,1,6] 返回值 [4,6] 说明 返回的结果中较小的数排在前面 解题思路 先使用 Set 集合存储数字,如果出现了第二个相同的数字,会在 Set 中找到对应的 展开全文
头像 李东蔚
发表于 2021-09-24 17:40:24
import java.util.*; * 其实这个题的关键就在于怎么分离第一次异或之后所得的a^b 首先要知道,a和b不是同一个数,那么异或结果不为0,那么结果的二进制肯定至少有一个是1 也就是说,为1的这一位上,a和b的二进制一个是0,一个是1 只要我们下一次异或只把是0(或者是1)的异或进来 展开全文
头像 kyrielx
发表于 2022-03-21 23:04:04
思路:采用HashMap 先遍历一遍数组,采用HashMap对每个元素进行个数统计 再遍历一遍map,取出value=1的两个元素,装入一个新数组中 最后,对两个元素进行升序排序,返回新数组 import java.util.*; public class Solution { /* 展开全文
头像 最好的pmgg
发表于 2021-03-10 17:53:04
HashMap做法,时间复杂度O(n) public int[] FindNumsAppearOnce (int[] array) { HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); 展开全文
头像 littlemuggle
发表于 2022-05-17 22:24:26
1.常规方法,把出现的元素放入一个集合,发现相同元素时从集合中拿出来 class Solution: def FindNumsAppearOnce(self , array: List[int]) -> List[int]: # write code here 展开全文
头像 JIEIJ
发表于 2021-10-07 16:47:00
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @param arrayLen int array数组长度 * @return int整型一维数组 * @return int* re 展开全文

问题信息

上传者:牛客301499号
难度:
268条回答 6269浏览

热门推荐

通过挑战的用户

查看代码
数组中只出现一次的两个数字