一、题目
给定一个含 n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算 法,找出数组中未出现的最小正整数。例如,数组{-5, 3, 2, 3}中未出现的最小正整数是 1;数组{1, 2, 3}中未出现的最小正整数是 4。要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用 C 或 C++语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
二、解答
(1)由于对空间方面未做限制,采用空间换时间的方案 ;
(2)C++实现:
// -*- coding: utf-8 -*-
// @ Date : 2021/5/20 13:14
// @ Author : RichardLau_Cx
// @ file : Richard.cpp
// @ IDE : Dev-C++
// @ Source : Data_Structure
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int func(int *num, int n) {
/**

该博客介绍了如何在给定包含n个整数的数组中,设计一个时间效率高的算法来找到未出现的最小正整数。算法采用C++实现,通过空间换时间的方法,时间复杂度为O(n),空间复杂度为O(n)。
最低0.47元/天 解锁文章
3766

被折叠的 条评论
为什么被折叠?



