题解 | #缺失的第一个正整数#
缺失的第一个正整数
https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ function minNumberDisappeared( nums ) { // 解题思路:结果必然是在[1,n+1]之间,如果nums为1,2,3这种,结果就是4. 否则就在[1,n] // 所以,我们可以把数组设计成一个类似Map的, 步骤如下 // 1. 将所有负数变成 n + 1 // 2. 遍历,更改标记即可 // 3. 返回第一个未被标记的下标即可. let n = nums.length; for (let i = 0; i < n; i++) { if (nums[i] <= 0) { nums[i] = n + 1; } } for (let i = 0; i < n; i++) { let num = Math.abs(nums[i]); if (num <= n) { nums[num - 1] = -Math.abs(nums[num - 1]); } } for (let k = 0; k < n; k++) { if (nums[k] > 0) { return k + 1; } } return n + 1; } module.exports = { minNumberDisappeared : minNumberDisappeared };
看代码介绍.