力扣645(java)-错误的集合(简单)

题目:

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

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

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

示例 1:

输入:nums = [1,2,2,4]
输出:[2,3]
示例 2:

输入:nums = [1,1]

输出:[1,2]
 

提示:

2 <= nums.length <= 104
1 <= nums[i] <= 104

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/set-mismatch
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

1.先将整个数组的数进行排序,定义一个长度为2的新数组存放重复数和缺失数

2.然后考虑错误的情况如:

   第一种错误出现在数组中间:[1,2,3,3,5,6](两个数一样找到了新数组的重复数,两个数差距为2,则缺失数为重复数+1)

   第二种错误出现在数组首部:[2,2,3,4,5,6](有重复数也没有两个数差距为2的数,但首元素不为1,则缺失数就为1)

   第三种错误出现在数组尾部:[1,2,3,4,5,5]  (有重复数也没有两个数差距为2的数,但末元素不为n, 则缺失数就为1)

3.遍历整个数组,找出错误,输出结果

代码:

 

 小知识:

   Arrays.sort(int[] a):是对一个数组的所有元素进行排序,并且是按从小到大的顺序。

 

posted on 2021-10-19 19:46  我不想一直当菜鸟  阅读(46)  评论(0编辑  收藏  举报