判断数组元素是否存在重复,要求时间复杂度为O(1)
来源:百度文库 编辑:神马文学网 时间:2024/04/29 23:54:58
下面的代码涉及判断数组元素是否存在重复,要求时间复杂度为O(1)。
这样的题肯定不能用双循环比较,这样太慢,用hashcode判断是正道,使用现成的hashset更能简化代码。
代码如下:
package com.sitinspring;
import java.util.HashSet;
import java.util.Set;
/** *//**
* 数组重复测试,要求时间复杂度为O(n)
* @author sitinspring(junglesong@gmail.com)
* @since 2008-6-11 上午11:12:53
* @vsersion 1.00 创建 sitinspring 2008-6-11 上午11:12:53
*/
public class ArrayDuplicateTest{
/** *//**
* 构造函数
*
*/
public ArrayDuplicateTest(int[] arr){
System.out.print("数组:");
for(int temp:arr){
System.out.print(temp+",");
}
if(hasDuplicateItem(arr)==false){
System.out.println("无重复结果");
}
else{
System.out.println("有重复结果");
}
}
/** *//**
* 取得检测结果
* @param arr
* @return
*/
private boolean hasDuplicateItem(int[] arr){
Set set=new HashSet();
for(int i:arr){
if(!set.add(i)){
return true;
}
}
return false;
}
public static void main(String[] args){
int[] arr1={1,2,3,4,5};
new ArrayDuplicateTest(arr1);
int[] arr2={1,2,3,4,5,5,53,43,42,2,454,6,5456,4534,4};
new ArrayDuplicateTest(arr2);
int[] arr3={1,2,3,4,5,767,4332,534,76,6583,356};
new ArrayDuplicateTest(arr3);
}
}
输出:
数组:1,2,3,4,5,无重复结果
数组:1,2,3,4,5,5,53,43,42,2,454,6,5456,4534,4,有重复结果
数组:1,2,3,4,5,767,4332,534,76,6583,356,无重复结果
这样的题肯定不能用双循环比较,这样太慢,用hashcode判断是正道,使用现成的hashset更能简化代码。
代码如下:
package com.sitinspring;
import java.util.HashSet;
import java.util.Set;
/** *//**
* 数组重复测试,要求时间复杂度为O(n)
* @author sitinspring(junglesong@gmail.com)
* @since 2008-6-11 上午11:12:53
* @vsersion 1.00 创建 sitinspring 2008-6-11 上午11:12:53
*/
public class ArrayDuplicateTest{
/** *//**
* 构造函数
*
*/
public ArrayDuplicateTest(int[] arr){
System.out.print("数组:");
for(int temp:arr){
System.out.print(temp+",");
}
if(hasDuplicateItem(arr)==false){
System.out.println("无重复结果");
}
else{
System.out.println("有重复结果");
}
}
/** *//**
* 取得检测结果
* @param arr
* @return
*/
private boolean hasDuplicateItem(int[] arr){
Set
for(int i:arr){
if(!set.add(i)){
return true;
}
}
return false;
}
public static void main(String[] args){
int[] arr1={1,2,3,4,5};
new ArrayDuplicateTest(arr1);
int[] arr2={1,2,3,4,5,5,53,43,42,2,454,6,5456,4534,4};
new ArrayDuplicateTest(arr2);
int[] arr3={1,2,3,4,5,767,4332,534,76,6583,356};
new ArrayDuplicateTest(arr3);
}
}
输出:
数组:1,2,3,4,5,无重复结果
数组:1,2,3,4,5,5,53,43,42,2,454,6,5456,4534,4,有重复结果
数组:1,2,3,4,5,767,4332,534,76,6583,356,无重复结果
判断数组元素是否存在重复,要求时间复杂度为O(1)
给出函数int remove_all(int* a,int a,int v),要求复杂度为O(n),
判断目录是否存在
1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次
SQL中判断是否存在..........
用API判断文件是否存在
SMTP判断邮箱是否存在,检查email地址是否真实存在 - PHP技术文章 - PHP中...
script判断是否为数字的方法
VC判断文件目录是否存在的众多方法 - 含笑的日志 - 网易博客
Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等
DWR 检查用户名是否重复
夜明珠是否真实存在?
夜明珠是否真实存在?
客观现实是否存在?
vba-数组学习(1)
判断气血是否充足
时间存在吗
给定长度为15的整数数组b,b中连续的相等元素构成的子序列称为平台,此程序求b中最长平台的长度
如何判断你的电脑是否含病毒1
判断孩子是否聪明的三条标准1
第五维空间是否存在
神灵是否真的存在?
中国经济是否存在美国骗局?
如何判断女性是否风骚