文章
67
粉丝
8
获赞
1
访问
8.8k
1.创建一个长度为n初值全0的数组numList,遍历给定数组,若元素>0则对应的numList下标+1;遍历numList,元素为0的元素的下标就是未出现过的最小正整数
2.
int main(int* list,int n){
int numList[n];
for(int i=0;i<n;i++){
numList[i]=1;
}
for(i=0;i<n;i++){
if(list[i]>0 && list[i]<n) numList[list[i]-1]++;//若当前元素为正且不超过数组长度则令对应下标+1
}
for(i=0;i<n;i++){
if(numList[i]==0) return i+1;//从头遍历,第一个为0的元素的下标就是未出现过的最小正整数
}
}
3.时间复杂度O(n),空间复杂度O(n)
登录后发布评论
暂无评论,来抢沙发