题解 | #缺失的第一个正整数#
缺失的第一个正整数
https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5
解题思路:
1、这里首先最重要的是理解题意,√
2、利用哈希占坑思想,把坑位占了, 负数和0先设置成n+1的正值
3、之后,利用1-n的坐标对应的1-n的正整数的值,把相应坑位的值设置成负值,
4、最后,留下来的最前一个正值,就是结果值了
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int minNumberDisappeared (int[] nums) {
int n = nums.length;
// 先把所有负数到0的值设置为边界值,排除掉
for(int i=0; i<n; i++) {
if(nums[i]<=0) nums[i] = n+1;
}
// 通过hash占位把坑里面的有值的设置为负数
for(int i=0; i<n; i++){
if(Math.abs(nums[i])<=n) {
nums[Math.abs(nums[i])-1] = -1*nums[Math.abs(nums[i])-1];
}
}
// 返回第n个坑位>0的值,也就是最小值的所在的位置
for(int i=0; i<n; i++) {
if(nums[i] >0) {
return i+1;
}
}
return n+1;
}
}
