时间空间复杂度问题 求详解?? 有一个长为N的数组里放着【1,N】范围的整数,设计一个算法判断这些整数有没有重复的。你的算法的时间空间复杂度各是多少? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 判断这些整数有没有重复只需要判断?最容易想到的算法:array[N];[N] = {0};for(i = 0; i < N; ++i){ if([array[i]-1] == 0) ++[array[i]-1]; else { 有重复; break; }}时间复杂度N空间复杂度N 最容易想到用两个for循环,例如array[n];for(int i=0; i<n-1; i++){ for(int j=i+1;j<n;j++){ if(array[i]==array[j]){ System.out.println('有重复'); break; } }}那么此时的时间复杂度为n*n/2,空间复杂度为n-------------------------------------若采用类似标记的方法的话如三楼的思路,应该空间复杂度为2n,时间复杂度为n吧 n和2n,3n,4n,5n,6n都是说的一个数量级的,记得在数据结构里都用等阶无穷小O(n)表示吧~ 新建一个数组,用来表示1~N中每个数字出现的次数,然后遍历给定的数组,统计数组中数字出现的次数,当判断条件不成立的时候,就表示array[i]这个数字之前已经出现过了,现在又出现了一次,所以判断有重复,break结束。 如何判断线程是否在运行? 帮忙解释下 运行结果,谢了,, char x=y; 这句代码为什么不能通过呢? 非常菜鸟的问题! 修改圖片exif值 搞死人的java Comm.jar包!还是有问题 关于《Thinking in Java》隐藏实现细目的一道题 jdk1.4安装时都向注册表里写哪些项啊?(希望对你也有启示) 怪事!!不停向文件写入元素变化了的对象,对象的值确一直没变 新手的问题!编译出错!在线等待! 求教java聊天工具服务器怎么转发数据 有关抽象类的问题,请教!
只需要判断?最容易想到的算法:array[N];
[N] = {0};
for(i = 0; i < N; ++i)
{
if([array[i]-1] == 0)
++[array[i]-1];
else
{
有重复;
break;
}
}时间复杂度N空间复杂度N
for(int i=0; i<n-1; i++){
for(int j=i+1;j<n;j++){
if(array[i]==array[j]){
System.out.println('有重复');
break;
}
}
}那么此时的时间复杂度为n*n/2,空间复杂度为n-------------------------------------若采用类似标记的方法的话
如三楼的思路,应该空间复杂度为2n,时间复杂度为n吧