Es tut mir leid, dass ich nicht sicher bin, welcher Typ dieses Problem genannt wird, nennen wir es einfach "Remapping", wie folgt beschrieben: Gegeben ein Ziel-Char-Array, sagen A [], musst du A direkt manipulieren. Und ein Remapping-Index-Array-Index [], der Indizes enthält, in denen der Wert neu zugewiesen werden sollte. Zum Beispiel, gegeben A [] = {a, b, c, d, e}, Index [] = {2,4,3,0,1}. Also Index [0] = 2, was bedeutet, dass nach der Manipulation der Wert einmal in A [0] A [2] sein muss, A [1] in A [4] usw. Ich weiß, dass dieses Problem extrem ist einfach, wenn wir ein anderes Array haben:Neuzuordnen eines Arrays mit O (1) Leerzeichen
vector<char> myarr = vector<char>(A.size());
for (int i = 0; i < myarr.size(); i++)
myarr[i] = A[index[i]];
// myarr is the answer.
Aber was soll ich tun, wenn ich nur O (1) Raum habe? Vielen Dank für Ihre Meinung.
Oh btw, korrigiert mich, wenn ich irgendwelche Fehler in der Grammatik haben. "P
Nun, ein C++ Array muss eine konstante Größe bei der Kompilierung bekannt haben. Jedes andere Array der gleichen Größe hat folglich auch eine konstante Größe. Was bedeutet, dass Sie _ O (1) Speicher verwenden. Also ... wenn du schlau bist ...: – Damon
TIPP: Das Problem, das du hast, ist, was du mit dem alten Wert von 'myArr [2]' (4) machen sollst, nachdem du 'myArr [2] = getan hast 2'. Wo würdest du das 4 schreiben, damit es dir keinen zusätzlichen Platz kostet? Beachten Sie, dass O (1) nicht nur eine Variable bedeutet, sondern eine konstante Anzahl von Variablen. – SJuan76
Im Allgemeinen ist dies nicht möglich. Irgendwelche Einschränkungen? –