解题思路:
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; } }