O(n)時間内にファイルの最初のnバイトを削除する

O(n)時間内にファイルの最初のnバイトを削除する

個人プロジェクト(読書:コーディング実験)のためのソリューションを探してみましたが、適切なものがないようです。正直言って、これが可能かどうかはわかりません。

これで、ファイル全体に基づいてこれを行う方法はありません。最初のnバイトなしで新しいファイルを作成する操作は、すでに存在しても機能しません。私が考えることができる唯一のことは、どういうわけかファイルの先頭がより遠くにあることをファイルシステムに知らせ、始めを消去することです。

しかし、私が言ったように、私はそれが可能であるかどうかはわかりません。

答え1

ファイルからバイトを削除したら、書き直す必要があります。これはO(L)時間になります。ここで、Lはファイルの長さです。通常のファイルシステムではO(n)を達​​成できません。

nをファイルシステムのブロックサイズに分割できる場合、この状況が発生する可能性があります。< O(n)これは、ディレクトリエントリから予約済みのinodeだけを削除するためです。 (理想的な世界では、プログラムはまさにそうするでしょう!)

関連情報