zoukankan      html  css  js  c++  java
  • *[codility]MissingInteger

    今天开始刷刷codility上respectable的题目,难度适中。

    https://codility.com/demo/take-sample-test/missing_integer

    本题是找出数组里第一个非负的整数,要求复杂度O(n)。那么首先想到的做法是排序,但这样负责度就上去了。要从nlogn降到n,常见的一个做法是用hashtable,这里就可以用set记录。要注意的是全负的情况,所以这里用了maxVal=0作为初值。

    #include <unordered_set>
    using namespace std;
    
    int solution(vector<int> &A) {
        // write your code in C++11
        unordered_set<int> positives;
        int maxVal = 0;
        for (int i = 0; i < A.size(); i++)
        {
            if (A[i] > 0 && positives.find(A[i]) == positives.end())
            {
                positives.insert(A[i]);
                if (A[i] > maxVal)
                    maxVal = A[i];
            }
        }
        if (positives.size() == maxVal)
            return maxVal+1;
        for (int i = 1; i < maxVal; i++)
        {
            if (positives.find(i) == positives.end())
            {
                return i;
            }
        }
    }
    

      

  • 相关阅读:
    异常及throw、与throws的介绍
    js数组
    正则表达式
    Date对象及toString方法
    js中函数与对象的使用
    js细节
    JavaScript介绍
    浮动、定位
    css背景样式
    盒子模型
  • 原文地址:https://www.cnblogs.com/lautsie/p/3871112.html
Copyright © 2011-2022 走看看