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