春天里,百花香...
#
摘要: package com.sitinspring.roundtable;
/** *//** *//** *//**
* 循环链表节点类
* @author: sitinspring(junglesong@gmail.com)
* @date: 2008-7-1-...
阅读全文
摘要: package com.sitinspring;
/** *//**
* 单链表节点类
* @author: sitinspring(junglesong@gmail.com)
* @date: 2008-7-1-下午10:42:49
* @param&nb...
阅读全文
摘要: 代码:
package com.sitinspring;
import java.util.Arrays;
/** *//**
* 泛型动态数组类,以数组为数据容器实现动态数组的功能
* @author: sitinspring(junglesong@gmail.com)
*&nbs...
阅读全文
摘要: package com.sitinspring;
/** *//**
* 整形数组实用类,能求两数组的并交差集,不借助于集合类
* @author: sitinspring(junglesong@gmail.com)
* @date: 2008-6-24-下午10:13:33
&...
阅读全文
摘要: 判断集合中存在重复是常见编程任务之一,当集合中数据量比较大时我们通常希望少进行几次扫描,这时双重循环法就不可取了。
位图法比较适合于这种情况,它的做法是按照集合中最大元素max创建一个长度为max+1的新数组,然后再次扫描原数组,遇到几就给新数组的第几位置上1,如遇到5就给新数组的第六个元素置1,这样下次再遇到5想置位时发现新数组的第六个元素已经是1了,这说明这次的数据肯定和以前的数据存在着重复。这种给新数组初始化时置零其后置一的做法类似于位图的处理方法故称位图法。它的运算次数最坏的情况为2N。如果已知数组的最大值即能事先给新数组定长的话效率还能提高一倍。
阅读全文
摘要: package com.sitinspring;
/** *//**
* 从8*8的方阵中找出最大价值轰炸目标,轰炸范围为9格
*
* @author sitinspring(junglesong@gmail.com)
* @since 2008-6-17...
阅读全文
摘要: 求两字符串的公共子串,如abc123与123456的公共字串为123,基本想法是在长的字符串前面加上长度等于短字符串的空格前缀,然后拿短字符串与新字符串挨个匹配,匹配上的置上匹配字符,否则置上空格,这样的新串就包含了匹配字串和空格,再劈分放入set即可,重复的元素会被set略过去。
阅读全文
下面的代码涉及判断数组元素是否存在重复,要求时间复杂度为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<Integer> set=new HashSet<Integer>();
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,无重复结果
摘要: package com.sitinspring;
import java.util.LinkedList;
import java.util.List;
/** *//**
* 将5,6,7,8,9添入到下面的算式中,使得他们的积有最大值
* _ _ _ * ...
阅读全文
sitinspring(http://www.blogjava.net)原创,转载请注明出处.