春天里,百花香...
#
摘要: 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.tkk7.com)原創,轉載請注明出處.