股票交易日和二維數組打印這兩道題就是time to sell stock和蛇形矩陣。
題目奇數位丟棄:(關於LinkedList和listIterator的使用)
輸入描述:
每組數據一行一個數字,爲題目中的n(n小於等於1000)。
輸出描述:
一行輸出最後剩下的數字。
輸入例子:
500
輸出例子:
255
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while(in.hasNext()){
int n=in.nextInt();
LinkedList<Integer> list=new LinkedList();
for(int i=0;i<=n;i++){
list.add(i);
}
while(list.size()!=1){
Iterator<Integer> it=list.listIterator(0);//使用迭代器遍歷並刪除元素
int index=1;
while(it.hasNext()){
Integer temp=it.next();
if(index%2 == 1){
it.remove();
}
index++;
}
}
System.out.println(""+list.peekFirst());
}
in.close();
}
}
題目描述:字符編碼
輸入描述:
每組數據一行,爲待編碼的字符串。保證字符串長度小於等於1000。
輸出描述:
一行輸出最短的編碼後長度。
輸入例子:
MT-TECH-TEAM
輸出例子:
33
哈弗曼編碼步驟:
1.蒐集數據頻率;
2.根據頻率構建哈弗曼樹進行編碼。將森林合併成一顆編碼中定義的滿樹(所有的結點要麼是樹葉,要麼有兩個孩子,且字符都在孩子上,而從根節點到孩子結點路徑的左右爲該字符的二進制編碼序列)。