Сообщение Re[12]: Зачем просят перевернуть строку на интервью? от 27.10.2018 18:26
Изменено 27.10.2018 18:28 σ
Re[12]: Зачем просят перевернуть строку на интервью?
Здравствуйте, Тёмчик, Вы писали:
Тё>Здравствуйте, AleksandrN, Вы писали:
Тё>>>Те же яйца (индекс), вид в профиль.
AN>>Представь свой вариант переворота C-строки в однобайтной кодировке.
Тё>
Не удовлетворяет условию задачи. Требование было — не выделять доп. памяти.
Очевидно, что под этим имеется в виду не только отсутствие явного malloc, но и отсутствие потребления стека пропорционально длине строки.
Тё>Здравствуйте, AleksandrN, Вы писали:
Тё>>>Те же яйца (индекс), вид в профиль.
AN>>Представь свой вариант переворота C-строки в однобайтной кодировке.
Тё>
Тё>void reverse( char[] s, int start, int length)
Тё>{
Тё> if (length > 1) {
Тё> s[start] ^= s[start+length-1];
Тё> s[start+length-1] ^= s[start];
Тё> s[start] ^= s[start+length-1];
Тё> reverse(s, start+1, length-2);
Тё> }
Тё>}
Тё>
Не удовлетворяет условию задачи. Требование было — не выделять доп. памяти.
Очевидно, что под этим имеется в виду не только отсутствие явного malloc, но и отсутствие потребления стека пропорционально длине строки.
Re[12]: Зачем просят перевернуть строку на интервью?
Здравствуйте, Тёмчик, Вы писали:
Тё>Здравствуйте, AleksandrN, Вы писали:
Тё>>>Те же яйца (индекс), вид в профиль.
AN>>Представь свой вариант переворота C-строки в однобайтной кодировке.
Тё>
Не удовлетворяет условию задачи. Требование было — не выделять доп. памяти.
Очевидно, что под этим имеется в виду не только отсутствие явного malloc, но и отсутствие потребления стека пропорционально длине строки.
А то таким "хитрым" приёмом кучу алгоритмов можно превратить в якобы O(1) по памяти, храня состояние в стеке вызовов.
Тё>Здравствуйте, AleksandrN, Вы писали:
Тё>>>Те же яйца (индекс), вид в профиль.
AN>>Представь свой вариант переворота C-строки в однобайтной кодировке.
Тё>
Тё>void reverse( char[] s, int start, int length)
Тё>{
Тё> if (length > 1) {
Тё> s[start] ^= s[start+length-1];
Тё> s[start+length-1] ^= s[start];
Тё> s[start] ^= s[start+length-1];
Тё> reverse(s, start+1, length-2);
Тё> }
Тё>}
Тё>
Не удовлетворяет условию задачи. Требование было — не выделять доп. памяти.
Очевидно, что под этим имеется в виду не только отсутствие явного malloc, но и отсутствие потребления стека пропорционально длине строки.
А то таким "хитрым" приёмом кучу алгоритмов можно превратить в якобы O(1) по памяти, храня состояние в стеке вызовов.