java新手求助算法问题
1)N个已经排序好的数组,每个数组有M个数字,给出一个算法把这N个数组合并成一个排好序的大数组,并分析该算法的时间和空间复杂度。
2)写一个Java函数最高效的实现字符串倒序(不能直接使用类库API)。
3)用Java数组实现一个先进先出的Queue。
求牛人解答
[解决办法]
用数组实现一个先进先出的queue
public class Queue{ private static final int DEFAULT = 10; private Object[] queue; /** * 数组的长度 */ private int length = 0; /** * 当前存储了多少数据 */ private int size = 0; public Queue() { queue = new Object[DEFAULT]; length = DEFAULT; } public Queue(int length) { queue = new Object[length]; this.length = length; } public void set(Object obj) { if (size >= length) { Object[] newQueue = new Object[length + DEFAULT]; System.arraycopy(queue, 0, newQueue, 0, length); length = length + DEFAULT; queue = newQueue; } queue[size] = obj; size++; } public Object get() { Object object = queue[0]; size--; for (int i = 0; i < size; i++) { queue[i] = queue[i + 1]; } queue[size] = null; return object; } public int size() { return size; }}
[解决办法]
Stack s = new Stack();
char[] chars = "zhouyongyang".toCharArray();
int length = chars.length;
StringBuffer ss= new StringBuffer();
for(int i = 0; i < length; i++)
{
s.add(chars[i]);
}
for(int i = 0; i < chars.length; i++)
{
ss.append(s.pop());
}
这很快,,,我测试过了,,,当字符串大时,,,要比11楼的快几十部可能会更大