领扣LintCode算法问题答案-1112. 寻找数据错误

领扣LintCode算法问题答案-1112. 寻找数据错误

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;
    }
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

限时福利1:原价 129 元,最后2天仅需 69 元!后天涨价至98元 限时福利2:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利3:购课添加助教领取价值 800 元的编程大礼包 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高并发请求场景多,因此对MySQL的性能、可用性、扩展性都提出了很高的要求。使用MySQL解决大量数据以及高并发请求已经是程序员的必备技能,也是衡量一个程序员能力和薪资的标准之一。 为了让大家快速系统了解高性能MySQL核心知识全貌,我为你总结了「高性能 MySQL 知识框架图」,帮你梳理学习重点,建议收藏! 【课程设计】 课程分为四大篇章,将为你建立完整的 MySQL 知识体系,同时将重点讲解 MySQL 底层运行原理、数据库的性能调优、高并发、海量业务处理、面试解析等。 一、性能优化篇: 主要包括经典 MySQL 问题剖析、索引底层原理和事务与锁机制。通过深入理解 MySQL 的索引结构 B+Tree ,学员能够从根本上弄懂为什么有些 SQL 走索引、有些不走索引,从而彻底掌握索引的使用和优化技巧,能够避开很多实战中遇到的“坑”。 二、MySQL 8.0新特性篇: 主要包括窗口函数和通用表表达式。企业中的许多报表统计需求,如果不采用窗口函数,用普通的 SQL 语句是很难实现的。 三、高性能架构篇: 主要包括主从复制和读写分离。在企业的生产环境中,很少采用单台MySQL节点的情况,因为一旦单个节点发生故障,整个系统都不可用,后果往往不堪设想,因此掌握高可用架构的实现是非常有必要的。 四、面试篇: 程序员获得工作的第一步,就是高效的准备面试,面试篇主要从知识点回顾总结的角度出发,结合程序员面试高频MySQL问题精讲精练,帮助程序员吊打面试官,获得心仪的工作机会。
©️2020 CSDN 皮肤主题: 鲸 设计师:meimeiellie 返回首页