Java 排队<;T>;O(1)时间
我刚刚创建了enqueue、dequeue和peek方法,但我不知道它们是否在O(1)时间内。如果不是,我该怎么做,你能在O(1)时间内解释怎么做吗Java 排队<;T>;O(1)时间,java,queue,Java,Queue,我刚刚创建了enqueue、dequeue和peek方法,但我不知道它们是否在O(1)时间内。如果不是,我该怎么做,你能在O(1)时间内解释怎么做吗 节点启动; 公共无效排队(T val) { 节点n=新节点(val); if(start==null) { 开始=n; }否则 { n、 下一步=开始; 开始=n; } } 公共T出列() { 如果(开始!=null) { T item=start.nodeValue; start=start.next; 退货项目; } 返回n
节点启动;
公共无效排队(T val)
{
节点n=新节点(val);
if(start==null)
{
开始=n;
}否则
{
n、 下一步=开始;
开始=n;
}
}
公共T出列()
{
如果(开始!=null)
{
T item=start.nodeValue;
start=start.next;
退货项目;
}
返回null;
}
公共空间窥视()
{
节点电流=开始;
while(curr!=null)
{
系统输出打印(curr.nodeValue+“”);
curr=curr.next;
}
}
它们位于O(1)或常数时间,因为操作所需的时间不受集合大小的影响。它们位于O(1)或常数时间,因为操作所需的时间不受集合大小的影响。嗯,入队和出队以常数时间运行,而peek以线性时间运行
分析复杂性的思想仅仅是计算操作的数量。我们所要做的就是假设在O(1)中创建一个节点、赋值和计算if语句
对于入队和出队,无论代码在哪里运行,这些操作的数量都是恒定的。因此,最后,代码只执行恒定数量的O(1)操作,这就产生了O(1)复杂性
对于peek方法,代码进入wile的次数与队列中的节点次数相同。因此,如果有n个节点,代码将进入n次循环:它执行n次(1)操作。
最后:peek具有线性复杂性
让一个方法打印运行线性时间的队列的所有值其实没什么大不了的,因为它涉及到对结构的迭代。好吧,入队和出队在固定时间内运行,peek在线性时间内运行 分析复杂性的思想仅仅是计算操作的数量。我们所要做的就是假设在O(1)中创建一个节点、赋值和计算if语句 对于入队和出队,无论代码在哪里运行,这些操作的数量都是恒定的。因此,最后,代码只执行恒定数量的O(1)操作,这就产生了O(1)复杂性 对于peek方法,代码进入wile的次数与队列中的节点次数相同。因此,如果有n个节点,代码将进入n次循环:它执行n次(1)操作。 最后:peek具有线性复杂性 让一个方法打印运行线性时间的队列的所有值其实没什么大不了的,因为它涉及到对结构的迭代。我忽略了
peek()
方法。这个答案是正确的。我忽略了peek()
方法。这个答案是正确的。
Node<T> start;
public void enqueue(T val)
{
Node<T> n = new Node<T>(val);
if (start == null)
{
start = n;
} else
{
n.next = start;
start = n;
}
}
public T dequeue()
{
if (start != null)
{
T item = start.nodeValue;
start = start.next;
return item;
}
return null;
}
public void peek ()
{
Node<T> curr = start;
while (curr != null)
{
System.out.print(curr.nodeValue + " ");
curr = curr.next;
}
}