【剑指OFFER】56 - I. 数组中数字出现的次数
发布日期:2021-06-29 19:47:13 浏览次数:3 分类:技术文章

本文共 1037 字,大约阅读时间需要 3 分钟。

题目

一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。

示例 1:

输入:nums = [4,1,4,6]

输出:[1,6] 或 [6,1]

示例 2:

输入:nums = [1,2,10,4,1,4,3,3]

输出:[2,10] 或 [10,2]

限制:

2 <= nums.length <= 10000

答案:

解法一:

class Solution {
public int[] singleNumbers(int[] nums) {
int[] num = new int[2]; int index = 0; Arrays.sort(nums); for(int i = 0; i < nums.length - 1; i++){
if(nums[i] != nums[i + 1]){
num[index] = nums[i]; index++; }else i++; } if(num[1] == 0) num[1] = nums[nums.length - 1]; return num; }}

解法二:

class Solution {
public int[] singleNumbers(int[] nums) {
int[] num = new int[2]; Set
set = new HashSet<>(); for(int n : nums){
if(set.contains(n) == false){
set.add(n); }else set.remove(n); } Iterator i = set.iterator(); num[0] = (int)i.next(); num[1] = (int)i.next(); return num; }}

转载地址:https://darkness.blog.csdn.net/article/details/115616054 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指OFFER】56 - II. 数组中数字出现的次数 II
下一篇:【力扣】179. 最大数

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月06日 18时04分49秒