本文共 1297 字,大约阅读时间需要 4 分钟。
要解决这个问题,我们需要找出一个未排序的整数数组中没有出现的最小的正整数。这种方法可以通过高效地使用集合来实现。
这种方法的时间复杂度为O(n log n),因为我们需要对这些正整数进行排序。
import java.util.Collections;import java.util.Set;import java.util.TreeSet;public class Solution { public int firstMissingPositive(int[] nums) { SetpositiveNumbers = new TreeSet<>(); for (int num : nums) { if (num > 0) { positiveNumbers.add(num); } } if (positiveNumbers.isEmpty()) { return 1; } int min = Collections.min(positiveNumbers); if (min > 1) { return 1; } int max = Collections.max(positiveNumbers); int candidate = 1; while (candidate < max) { if (!positiveNumbers.contains(candidate)) { return candidate; } candidate++; } return max + 1; }}
这种方法高效地解决了问题,能够快速找到最小的缺失正整数。
转载地址:http://cegyk.baihongyu.com/