给定数组的最小正缺失整数

时间:2018-05-30 12:25:06

标签: arrays time time-complexity

我想找到一个数组中缺少的最小正整数,其中' n'时间复杂性。可能吗?例如,{-3,-6,1,-9,4,6,0}是我们的数组,那么最小正整数将是2.

1 个答案:

答案 0 :(得分:1)

如何创建另一个数组来存储您找到的变量。在这个数组中,数字可以是它的索引,如果它被发现存储为布尔值。然后你查看那个数组,看看哪一个没找到。你的描述非常丰富,所以我可能不会完全解决它,但它可能会让你更接近。

bool arr_check [ARR_SIZE];    // whick numbers has been found.
for (int i=0; i<ARR_SIZE; i++)
    if(arr[i]>0)
        arr_check[arr[i]] = true;
for (int i=0; i<ARR_SIZE; i++)
    if (!arr_check[i])
        return i;

您只需要扫描两次数组,这会给它带来复杂性&#39; 2N&#39;对吧?你不会在没有先排序的情况下更快地得到它,这超过&#34; N&#34;