写点什么

【LeetCode】 错误的集合 Java 题解

用户头像
HQ数字卡
关注
发布于: 3 小时前

题目描述

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复。


给定一个数组 nums 代表了集合 S 发生错误后的结果。


请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。


示例 1:
输入:nums = [1,2,2,4]输出:[2,3]
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/set-mismatch著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码

思路分析

  • 这个题目题意理解简单,首先一次遍历找到重复数字,在进行一次遍历,就可以找到缺失的数字。

代码

    public int[] findErrorNums(int[] nums) {        int n = nums.length;        int[] arr = new int[n + 1];        int repeatedNum = 0;        for (int num : nums) {            arr[num] += 1;            if (arr[num] > 1) {                repeatedNum = num;            }        }        int lossNum = 0;        for (int i = 1; i <= n; i++) {            if (arr[i] == 0) {                lossNum = i;                break;            }        }        int[] ans = new int[2];        ans[0] = repeatedNum;        ans[1] = lossNum;
return ans; }
复制代码

总结

  • 上述解法的时间复杂度是 O(n) , 空间复杂度是 O(n)

  • 坚持每日一题,加油!

发布于: 3 小时前阅读数: 3
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】 错误的集合Java题解