所以我有一个方法,它假设在链表中的给定索引处插入数据。我实现的方法确实完成了它通过JUnit测试功能和更正。 但是,它没有通过JUnit中的时间效率测试。
我解决这个问题的逻辑是找出索引的确切位置。 例如,如果索引是< =(size / 2)然后开始遍历链表的头部,我可以这样做。否则,从等于(大小/ 2)的点开始并继续直到找到索引。 不确定这种逻辑是解决时间效率的正确方法之一。
如何使这种方法简洁有效?
public T removeAtIndex(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException();
}
LinkedListNode<T> temp = head;
int i = 0;
if (index == 0) {
return removeFromFront();
}
if (index == size - 1) {
return removeFromBack();
}
while (i < index) {
temp = temp.getNext();
i++;
}
temp.getPrevious().setNext(temp.getNext());
temp.getNext().setPrevious(temp.getPrevious());
size--;
return temp.getData();
}
如果有人能够如何实现这种逻辑,我将不胜感激。