知识点

哈希表

思路

遍历整个数组可以求出最大的负数

建立哈希表,然后从1开始查看是否存在该正数,因为最多n个数,所以尝试最多n次

时间复杂度为O(n)

AC code (C++)

#include <unordered_set>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型vector
     */
    const int INF = 2e9;
    vector<int> findMissingAndMaxNegative(vector<int>& nums) {
        unordered_set<int> S(nums.begin(), nums.end());
        int mx = -INF, mn = 0;
        for (auto x : nums) {
            if (x < 0) mx = max(mx, x);
        }
        if (mx == -INF) mx = 0;
        for (int i = 1; ; i ++) {
            if (!S.count(i)) {
                mn = i;
                break;
            }
        }
        return {mn, mx};
    }
};