Если нам разрешено вставлять класс Node
, я бы решил проблему, как я ее реализовал ниже. hasLoop()
работает в O (n) времени и занимает только пространство counter
. Кажется ли это подходящим решением? Или есть способ сделать это без вложения Node
? (Очевидно, что в реальной реализации было бы больше методов, таких как RemoveNode(Node n)
и т. Д.)
public class LinkedNodeList {
Node first;
Int count;
LinkedNodeList(){
first = null;
count = 0;
}
LinkedNodeList(Node n){
if (n.next != null){
throw new error("must start with single node!");
} else {
first = n;
count = 1;
}
}
public void addNode(Node n){
Node lookingAt = first;
while(lookingAt.next != null){
lookingAt = lookingAt.next;
}
lookingAt.next = n;
count++;
}
public boolean hasLoop(){
int counter = 0;
Node lookingAt = first;
while(lookingAt.next != null){
counter++;
if (count < counter){
return false;
} else {
lookingAt = lookingAt.next;
}
}
return true;
}
private class Node{
Node next;
....
}
}
Заменить drive.mount('/content/drive/')
на drive.mount('/content/drive')
Если монтирование не работает, даже если использовался абсолютный путь /content/drive
, убедитесь, что существуют соответствующие каталоги,
!mdkir -p /content/drive
Выполните команду, чтобы сначала размонтировать диск.
!fusermount -u drive
Затем попробуйте снова,
from google.colab import drive
drive.mount('/content/drive')
просто удалите «/» после диска, и он отлично работает.
То есть от drive.mount ('/ content / drive /') до drive.mount ('/ content / drive')
Я столкнулся с этой ошибкой и сегодня утром. Я не уверен, что этот коммит что хотел исправить, но это, безусловно, вызвало ошибку. Обходной путь - скопировать код для drive.py в colab, закомментировать строки 100
и 101
следующим образом:
# drive.py
...
try:
if _os.path.islink(mountpoint):
raise ValueError('Mountpoint must not be a symlink')
if _os.path.isdir(mountpoint) and _os.listdir(mountpoint):
raise ValueError('Mountpoint must not already contain files')
if not _os.path.isdir(mountpoint) and _os.path.exists(mountpoint):
raise ValueError('Mountpoint must either be a directory or not exist')
# if '/' in mountpoint and not _os.path.exists(_os.path.dirname(mountpoint)):
# raise ValueError('Mountpoint must be in a directory that exists')
except:
d.terminate(force=True)
raise
...
затем заменить
from google.colab import drive
drive.mount('content/drive/')
с
mount('/content/drive/')
с помощью функции mount
, которую вы скопировали из drive.py
Надеемся, что проблема будет решена достаточно быстро, поэтому мы можем обойти этот обходной путь.
Я получил ошибку, а также изменить на drive.mount('/content/drive')
@clarky: ошибка, которую вы получили, была правильной, пыталась сказать вам, что вы используете drive.mount () неправильно: аргумент точки монтирования для drive.mount () должен быть пустым существующим каталогом или именем несуществующий файл / каталог в каталоге, который существует, так что точка монтирования может быть создана как часть операции монтирования. Использование вами относительного пути в drive.mount('content/drive/')
(то есть content/drive/
) подразумевает, что монтирование должно происходить в '/content/content/drive'
, потому что путь интерпретатора по умолчанию - /content
; обратите внимание на двойной компонент пути content
, и, вероятно, у вас еще нет каталога с именем / content / content, внутри которого можно создать точку монтирования с именем drive
. Исправление к коду вашего ноутбука заключается в том, чтобы вместо этого использовать drive.mount('/content/drive')
- обратите внимание на ведущий /
, делающий путь монтирования абсолютным, а не относительным.