【2018统考真题】给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高 效的算法,找出数组中未出现的最小正整数。

【2018统考真题】给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高

效的算法,找出数组中未出现的最小正整数。例如,数组{-5,3,2,3}中未出现的最小正

整数是1;数组{1,2,3}中未出现的最小正整数是4。

代码思路:

题目让你找未出现的最小正数,你就从1往下循环,用当前循环的数去看看数组里面有没有,也就是查找,我这里就用最简单暴力算法,你可以用其他一些高效的查找算法,比如快排啥的。

c 复制代码
int find_minN(int A[],int len) {
	int i = 1;
	int j = 0;
	int flag = 0;//标记位,0表示数组里面没有当前的i,1表示有
	while(i){
		flag = 0;
		for (j = 0;j < len;j++) {
			if (i == A[j]) {
				flag = 1;
				continue;
			}
		}
		if (flag == 0) {//找到最小正整数
			return i;
		}
		i++;
		if (i > len) {
			return i;
		}
	}
}
int main() {
	int A[4] = { -5,3,2,3 };//几个测试用例
	int B[3] = { 1,2,3 };
	int C[10] = { 1,5,2,6 };
	int D[7] = { 2,3,1,5,6,4 };
	int m_A = find_minN(A,4);
	printf("A中未出现的最小正整数为%d\n", m_A);

	int m_B = find_minN(B,3);
	printf("B中未出现的最小正整数为%d\n", m_B);

	int m_C = find_minN(C, 4);
	printf("C中未出现的最小正整数为%d\n", m_C);

	int m_D = find_minN(D, 6);
	printf("D中未出现的最小正整数为%d\n", m_D);
	return 0;
}
相关推荐
重生之后端学习4 分钟前
239. 滑动窗口最大值[困难]✅
java·数据结构·算法·leetcode·职场和发展
fpcc30 分钟前
算法和数据结构—动态规划法
数据结构·算法·动态规划
星星.7223 小时前
C++算法竞赛|二分查找与二分答案:边界模板、浮点二分、STL
数据结构·c++·算法
sel_93 小时前
【OPD论文导读(二)】OPD(On-Policy Distillation)全景调研:十篇论文讲透“在自己生成的内容上学习“这件事
人工智能·python·深度学习·学习·算法·语言模型
动词ing3 小时前
【学习笔记】数据结构(数组长度和关键特性+快慢指针+左右指针)
数据结构·笔记·学习
金幄科技4 小时前
RAG第四篇:重排序 Rerank——粗召回之后,为什么还需要一次精排
人工智能·算法·ai·ai编程
M78佐菲4 小时前
Linux学习笔记:文件IO
linux·笔记·学习·算法
lhldsg5 小时前
课程排课系统实战指南:从数据库设计到算法调优全流程解析
java·数据库·算法·小程序
BSD_HY5 小时前
薄膜开关矩阵扫描电路设计中的防鬼键措施
人工智能·算法·矩阵·人机交互·薄膜开关·源头工厂·深圳工厂
linux-hzh5 小时前
百日算法修炼 · Day 17
数据结构·算法