【精】LintCode领扣算法问题答案:1112. 寻找数据错误
发布日期:2021-06-30 17:09:53 浏览次数:2 分类:技术文章

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

1112. 寻找数据错误

描述

集合S中原本包含数字1到n。但不幸的是,由于数据错误集合中的一个数变成了集合中的另一个数,这导致集合中有两个重复的数,并且集合中缺失了1到n的某个数。

给定数组nums,表示发生错误后的数组,以数组的形式返回重复的数值和缺失的数值。

  1. 数组的大小范围为[2, 10000]。
  2. 数组元素是无序的。

样例 1:

输入: 	nums = [1,2,2,4]输出: 	[2,3]解释:	2是重复的数,3是缺失的数。

样例 2:

输入: 	nums = [1,3,3,4]输出: 	[3,2]解释:	3是重复的数,2是缺失的数。


文章目录


题解

public class Solution {
/** * @param nums: an array * @return: the number occurs twice and the number that is missing */ public int[] findErrorNums(int[] nums) {
// Write your code here Arrays.sort(nums); int[] ret = new int[2]; int offset = 1; for (int i = 0; i < nums.length; i++) {
if (ret[1] == 0 && nums[i] != i + offset) {
ret[1] = i + offset; } if (ret[0] == 0 && nums[i] == nums[i + 1]) {
ret[0] = nums[i]; if (ret[1] == 0) {
if (i + 2 < nums.length) {
if (nums[i + 2] != nums[i] + 1) {
ret[1] = i + 1 + offset; break; } } else {
ret[1] = i + 1 + offset; break; } } offset--; i++; } } if (ret[1] == 0) {
ret[1] = nums.length; } return ret; }}

最后说两句

非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~

作者水平有限,如果文章内容有不准确的地方,请指正。

希望小伙伴们都能每天进步一点点。

声明

本文由博客原创,转载请注明来源,谢谢~

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

上一篇:【精】领扣LintCode算法问题答案:1115. 二叉树每层的平均数
下一篇:领扣LintCode算法问题答案-1106. 最大二叉树

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月20日 23时06分38秒