Порридж В Ко-ливинге
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Viktor
ох. почти что спам 😄
Evgeniy
Evgeniy
(a[i], a[j]) = (a[j], a[i]);
Порридж В Ко-ливинге
Но 100% под капотом там так оптимизировалли, что это не отлтчается от ^=
Evgeniy
jit компилятор на лету меняет на обмен между регистрами
Порридж В Ко-ливинге
Evgeniy
и итоговый код не отличается, если бы с дополнительной переменной писал
Evgeniy
https://sharplab.io/#v2:D4AQTAjAsAUOAMtwGYAEBvWruvGDWORAlgHYAuqAhqgLypgDchR2ZlARnagKzMyscACioAaDgEpuQjqKoT+g7CAgBOEagDUqAES6tqSYpwBfWCaA
Порридж В Ко-ливинге
Порридж В Ко-ливинге
В низу это псевдо ассамблер?
Evgeniy
В низу это псевдо ассамблер?
https://sharplab.io/#v2:C4LghgzgtgPgAgJgIwFgBQiAM7EGYAEA3uvqfogkSWTQJYB2w+Y+AvPggNzU2kNMAjNvgCs3NLzIAKMABoBASmFSBssAvGTScJAE4Z+ANT4ARKaP5FmsgF90NoA=
Evgeniy
вот ассемблер
Порридж В Ко-ливинге
Гениально 🤣
Порридж В Ко-ливинге
Он просто поменял их местами изначально
Порридж В Ко-ливинге
Надо попробывать использовать эти переменные перед свапом
Evgeniy
https://sharplab.io/#v2:C4LghgzgtgPgAgJgIwFgBQiAM7EGYAEA3uvqfogkSWTQJYB2w+Y+AvPggNzU2kNMAjNvgCs3NLzJwkATgAUYAJTjJpafIHKevBQBp8m4XIH6lK1eoX4A1PgBE9mwa0SyAX3RugA=
Evgeniy
Записал одни, использовал, записал другие. 🙂
Порридж В Ко-ливинге
Порридж В Ко-ливинге
А можно было бы, наверное просто поменять местами переменные в writeLine
Порридж В Ко-ливинге
Но не буду больше ничего говорить, т.к. слабо знаю asm
Порридж В Ко-ливинге
Товарищи
Порридж В Ко-ливинге
Делимся самыми короткими/отбитыми решениями сегодняшней задачки!
Порридж В Ко-ливинге
Очень похожа на задачку на 4ой неделе, где надо было тоже двигать единички
Порридж В Ко-ливинге
class Solution {
public:
int findComplement(int num) {
int i = 32;
while(num >> (32 - i)){--i;}
return ((unsigned)(~num) << i >> i);
}
};
Uladzimir
Могу только длинным поделиться
Порридж В Ко-ливинге
Это мое чудо
Порридж В Ко-ливинге
Uladzimir
На js :)
Порридж В Ко-ливинге
Опа, ну давай
Порридж В Ко-ливинге
Мне даже интересно стало)
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Я вообще ожидал, что кто-то сделает через bitset
Uladzimir
Да шутка, нечего там смотреть, if в ifе и ifом погоняет
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Я просто вспомнил, что очень похожая задачка была
Порридж В Ко-ливинге
Вообще, вот задачи с битами, это единственные задачи на которых я не туплю, подождите еще недельку, и вы увидете мои страдания
Порридж В Ко-ливинге
Viktor
Viktor
выглядит магически, конечно
Порридж В Ко-ливинге
Ага, особенно комбинация (unsigned) и ~
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Мне кажется, проверка в конце не нужна
Evgeniy
решал ещё два месяца назад
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Как и я
Evgeniy
Viktor
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Ааа
Viktor
я нахожу число со всеми единичками и вычитаю оттуда
Порридж В Ко-ливинге
Капец, ну это прям железное
Порридж В Ко-ливинге
Evgeniy
Evgeniy
https://leetcode.com/problems/number-complement/discuss/613182/Python3-using-bit-xor
Evgeniy
вот оно, только на питоне
Evgeniy
и с встроенной функцией
Порридж В Ко-ливинге
bit_length
Порридж В Ко-ливинге
Очень удобно
Порридж В Ко-ливинге
Я бы назвал это читом
Evgeniy
Ага
Порридж В Ко-ливинге
Мне для этого надо было int задекларить и while loop прогнать
Arman
На Python решал: num^(int('1'*(len(bin(num))-2),2))
Порридж В Ко-ливинге
Почему 1 в кавычках?
Evgeniy
Строку делает
Порридж В Ко-ливинге
Ну, я знаю
Порридж В Ко-ливинге
Ааа, понял, типо повторить единицы