数组中重复的数字

题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。

方法一:类似选择排序的方法,将每一个数和其它的数进行比较,得到重复的数字
时间复杂度为O(n^2)

bool duplicate(int numbers[], int length, int* duplication) {
	if(numbers==nullptr||length<=0)
	return false;
	for(int i=0;i < length;i ++)
	{
		if(numbers[i]>=length||numbers[i] <0)
		{
			return false;
		}
	}
	for(int i=1;i < length;i ++)
	{
		for(int j=0;j < i;j ++)
		{
			if(numbers[i]==numbers[j])
			{
				*duplication=numbers[i];
				return true;
			}
		}
	}
	return false;
}

方法二:从头到尾依次扫描这个数组中的每个数字;
当扫描到下标为i的数字时,首先比较这个数字(m)是不是等于i;
如果是,则接着扫描下一个数字;
如果不是,将这个数和第m个数字进行比较,如果它和第m个数字相等,就找到了一个重复的数字;
如果不相等,就把第i个数字和第m个数字交换,把m放到属于它的位置。
看着都晕了,举个例子:{2,3,1,0,2,5,3}
第0个数字是2,与下标不符,再和第2个数字进行比较,不同,所以和第2个数字(1)进行交换->{1,3,2,0,2,5,3},
第0个数字是1,与下标不符,再和第1个数字进行比较,不同,所以和下标为1的数字(3)交换->{3,1,2,0,2,5,3}
第0个数字是3,与下标不符,再和第3个数字进行比较,不同,再和下标为3的数字(0)交换->{0,1,2,3,2,5,3}
符合下标值的数字,接着扫描…
第4个数字是2,与下标不符,和下标为2的数字进行比较,相同,找到,返回true;

方法二的时间复杂度是O(n),空间复杂度为O(1);

bool duplicate(int numbers[], int length, int* duplication) {
	if(numbers==nullptr || length <=0)
	{
		return false;
	}
	for(int i=0;i < length;i ++)
	{
		if(numbers[i]<0||numbers[i]>=length)
		{
		return false;
		}
	}
	for(int i=0;i < length;i ++)
	{
		while(numbers[i]!=i)
		{
			if(numbers[i]==numbers[numbers[i]])
			{
				*duplication=numbers[i];
				return true;
			}
			int temp=numbers[i];
			numbers[i]=numbers[temp];
			numbers[temp]=temp;
		}
	}
	return false;
}
内容概要:该论文深入研究了液压挖掘机动臂下降势能回收技术,旨在解决传统液压挖掘机能耗高的问题。提出了一种新型闭式回路势能回收系统,利用模糊PI自整定控制算法控制永磁无刷直流电动机,实现了变转速容积调速控制,消除了节流和溢流损失。通过建立学模型和仿真模型,分析了不同负载下的系统性能,并开发了试验平台验证系统的高效性和节能效果。研究还涵盖了执行机构能量分布分析、系统元件参匹配及电机控制性能优化,为液压挖掘机节能技术提供了理论和实践依据。此外,通过实验验证,该系统相比传统方案可降低28%的能耗,控制系统响应时间缩短40%,为工程机械的绿色化、智能化发展提供了关键技术支撑。 适合人群:从事工程机械设计、制造及维护的工程师和技术人员,以及对液压系统节能技术感兴趣的科研人员。 使用场景及目标:①理解液压挖掘机闭式回路动臂势能回收系统的原理和优势;②掌握模糊PI自整定控制算法的具体实现;③学习如何通过理论建模、仿真和实验验证来评估和优化液压系统的性能。 其他说明:此研究不仅提供了详细的理论分析和学建模,还给出了具体的仿真代码和实验据,便于读者在实际工作中进行参考和应用。研究结果表明,该系统不仅能显著提高能源利用效率,还能延长设备使用寿命,降低维护成本,具有重要的工程应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值