leet-code/src/main/java/leetcode/editor/cn/SetMismatch.java

79 lines
1.9 KiB
Java
Raw Normal View History

2021-07-04 00:42:48 +08:00
//集合 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
//
// Related Topics 位运算 数组 哈希表 排序
// 👍 174 👎 0
package leetcode.editor.cn;
import java.util.Arrays;
//645:错误的集合
class SetMismatch {
public static void main(String[] args) {
//测试代码
Solution solution = new SetMismatch().new Solution();
System.out.println(solution.findErrorNums(new int[]{1, 2, 2, 4}));
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int[] findErrorNums(int[] nums) {
Arrays.sort(nums);
int[] arr = new int[2];
int index = 1;
for (int i = 0; i < nums.length; i++) {
if (i + index > nums[i]) {
arr[0] = nums[i];
index--;
} else if (i + index < nums[i]) {
arr[1] = i + index;
index++;
}
if (arr[0] > 0 && arr[1] > 0) {
break;
}
}
if (arr[0] == 0) {
arr[0] = nums.length;
}
if (arr[1] == 0) {
arr[1] = nums.length;
}
return arr;
}
}
//leetcode submit region end(Prohibit modification and deletion)
}