题解 | #没有出现的编号#

题目考察的知识点

  1. 数组的遍历和访问
  2. 数组元素的判断和赋值
  3. 数值比较和取最大值

题目解答方法的文字分析

  1. 首先,定义一个变量 max 并初始化为一个较小的数,这里使用了 Integer.MIN_VALUE(Java 中的整数最小值)。
  2. 使用 for-each 循环遍历数组 nums,如果数组元素小于 0,则与 max 比较取较大值,并更新 max
  3. 第二个循环中,使用 for 循环遍历数组 nums 的索引。如果数组元素大于等于 0,且小于数组长度,将数组元素的值作为索引,将对应位置的值修改为当前索引值。
  4. 接下来,判断 max 是否还是初始值,如果是则将其置为 0。
  5. 第三个循环中,再次使用 for 循环遍历数组 nums 的索引。
    • 输出数组元素的值。
    • 如果数组元素不等于 0,并且索引值为 0,则返回数组 [1, max]。
    • 否则,如果索引值不等于数组元素的值,则返回数组 [索引值, max]。
  6. 如果以上循环都没有返回结果,则表示数组中不存在缺失的元素和最大负数,返回数组 [0, 0]。

本题解析所用的编程语言

本题的解析使用了JavaScript作为编程语言。

完整且正确的编程代码

function findMissingAndMaxNegative(nums) {
    let max = Number.MIN_SAFE_INTEGER;
    for (let num of nums) {
        if (num < 0)
            max = Math.max(max, num);
    }
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] >= 0 && nums[i] < nums.length) {
            nums[nums[i]] = nums[i];
        }
    }
    max = max === Number.MIN_SAFE_INTEGER ? 0 : max;
    for (let i = 0; i < nums.length; i++) {
        console.log(nums[i]);
        if (nums[i] !== 0 && i === 0)
            return [1, max];
        if (i !== nums[i])
            return [i, max];
    }
    return [0, 0];
}

备注:Number.MIN_SAFE_INTEGER 是 JavaScript 的一个常量,用于表示 JavaScript 中可安全表示的最小整数。它的值是 -9007199254740991,也就是 -(2的53次方 - 1)。

在 JavaScript 里,由于使用 IEEE 754 标准表示数字,JavaScript 的整数范围是-9007199254740991 到 9007199254740991(不包括两个边界值)。超过这个范围的整数会失去精度。

使用 Number.MIN_SAFE_INTEGER 可以确保得到一个在 JavaScript 安全范围内的最小整数值。如果你需要表示更小的整数,可以使用 BigInt 类型或其他大数库。

题解 | 前端刷题 文章被收录于专栏

题目考察的知识点 题目解答方法的文字分析 本题解析所用的编程语言 完整且正确的编程代码

全部评论

相关推荐

01-19 12:48
门头沟学院 C++
只想搞钱的鸽子很喜欢...:混账是很多的,还有那些在自己风华正茂的年纪说风凉话讥讽那些下岗前员工的。这些人都是现在职场环境这么烂的帮凶
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务