春风博客

春天里,百花香...

导航

<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

公告

MAIL: junglesong@gmail.com
MSN: junglesong_5@hotmail.com

Locations of visitors to this page

常用链接

留言簿(11)

随笔分类(224)

随笔档案(126)

个人软件下载

我的其它博客

我的邻居们

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

#

轮圈数数退出问题

     摘要: package com.sitinspring.roundtable; /** *//** *//** *//**  * 循环链表节点类  * @author: sitinspring(junglesong@gmail.com)  * @date: 2008-7-1-...  阅读全文

posted @ 2008-07-05 09:14 sitinspring 阅读(422) | 评论 (0)编辑 收藏

泛型单链表类

     摘要: package com.sitinspring; /** *//**  * 单链表节点类  * @author: sitinspring(junglesong@gmail.com)  * @date: 2008-7-1-下午10:42:49  * @param&nb...  阅读全文

posted @ 2008-07-01 22:44 sitinspring 阅读(536) | 评论 (0)编辑 收藏

泛型动态数组类

     摘要: 代码: package com.sitinspring; import java.util.Arrays; /** *//**  * 泛型动态数组类,以数组为数据容器实现动态数组的功能  * @author: sitinspring(junglesong@gmail.com)  *&nbs...  阅读全文

posted @ 2008-06-25 17:08 sitinspring 阅读(1315) | 评论 (0)编辑 收藏

整形数组实用类,用于求两数组的并交差集

     摘要: package com.sitinspring; /** *//**  * 整形数组实用类,能求两数组的并交差集,不借助于集合类  * @author: sitinspring(junglesong@gmail.com)  * @date: 2008-6-24-下午10:13:33 &...  阅读全文

posted @ 2008-06-24 22:51 sitinspring 阅读(1188) | 评论 (0)编辑 收藏

使用位图法判断整形数组是否存在重复

     摘要: 判断集合中存在重复是常见编程任务之一,当集合中数据量比较大时我们通常希望少进行几次扫描,这时双重循环法就不可取了。

位图法比较适合于这种情况,它的做法是按照集合中最大元素max创建一个长度为max+1的新数组,然后再次扫描原数组,遇到几就给新数组的第几位置上1,如遇到5就给新数组的第六个元素置1,这样下次再遇到5想置位时发现新数组的第六个元素已经是1了,这说明这次的数据肯定和以前的数据存在着重复。这种给新数组初始化时置零其后置一的做法类似于位图的处理方法故称位图法。它的运算次数最坏的情况为2N。如果已知数组的最大值即能事先给新数组定长的话效率还能提高一倍。  阅读全文

posted @ 2008-06-18 04:11 sitinspring 阅读(1199) | 评论 (0)编辑 收藏

求最大价值轰炸目标

     摘要: package com.sitinspring; /** *//**  * 从8*8的方阵中找出最大价值轰炸目标,轰炸范围为9格  *   * @author sitinspring(junglesong@gmail.com)  * @since 2008-6-17...  阅读全文

posted @ 2008-06-17 11:56 sitinspring 阅读(274) | 评论 (0)编辑 收藏

求两字符串的公共子串

     摘要: 求两字符串的公共子串,如abc123与123456的公共字串为123,基本想法是在长的字符串前面加上长度等于短字符串的空格前缀,然后拿短字符串与新字符串挨个匹配,匹配上的置上匹配字符,否则置上空格,这样的新串就包含了匹配字串和空格,再劈分放入set即可,重复的元素会被set略过去。  阅读全文

posted @ 2008-06-12 17:10 sitinspring 阅读(2190) | 评论 (0)编辑 收藏

不使用中间变量交换两个整型值的方法

int x=10;
int y=20;

// 不使用中间变量使x,y换值的方法,有溢出的危险性
x=x+y;// 现在x变成了两者之和
y=x-y;// 现在y=(x+y)-y 等于 y=x,换值成功
x=x-y;// 现在x=(x+y)-y 等于 x=(x+y)-x因为刚才y已经变成x的值了,等于x=原来的y值,换值成功    

System.out.println(
"x="+x+" y="+y);
输出:
x=20 y=10

posted @ 2008-06-11 12:02 sitinspring 阅读(1765) | 评论 (6)编辑 收藏

判断数组元素是否存在重复,要求时间复杂度为O(1)

下面的代码涉及判断数组元素是否存在重复,要求时间复杂度为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,无重复结果

posted @ 2008-06-11 11:44 sitinspring 阅读(3045) | 评论 (1)编辑 收藏

将5,6,7,8,9添入到算式 _ _ _ * _ _ 中,要求求出最大乘积的结果和算式

     摘要: package com.sitinspring; import java.util.LinkedList; import java.util.List; /** *//**  * 将5,6,7,8,9添入到下面的算式中,使得他们的积有最大值  * _ _ _ * ...  阅读全文

posted @ 2008-06-11 10:57 sitinspring 阅读(906) | 评论 (0)编辑 收藏

仅列出标题
共13页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last 
sitinspring(http://www.blogjava.net)原创,转载请注明出处.