Palindrom Problemi ve Bit
August 1, 2020Arşivden çıkan bir başka probleme bakalım.
Soru metnini yine tam hatırlayamıyorum ancak aşağıdakine benzerdi.
Oyun-sever alex bir string oluşturuyor.
Önce alfebenin ilk harfini yazıyor. Sıradaki harfi yazdıktan sonra o harfe kadar yazdıklarının palindromunu metnin sonuna ekliyor.
Alex a harfini yazdı ve sıradaki harfi yazdıktan sonra önceki kısmın palindromunu ekledi.
aba
İşlemi tekrarlayalım.
abacaba
abacabadabacaba
abacabadabacabadabacabadabacaba
bu işlemi alfabedeki tüm harfler bitinceye kadar tekrarlıyor.
Bizden istenen input olarak verilen bir positif tamsayı n için metnin n. elemanını bulmak. 1 <= N < 2^27
Çözüm
Problemi ağaç şeklinde ifade edersek root eleman z karakteri olur. z karakteri 2 tane y node u içerir. her bir y node u 2 şer tane x içerir. Bu şekilde leaf nodeların hepsi a karakteri olur.
Eğer dikkatlice incelersek
- 1. karakter a
- 2. karakter b
- 4. karakter c
- 8. karakter d
- .
- .
- .
- 2^26. karakter z
Problemimiz şuna dönüştü. Input değeri binary olarak ifade edip right most set bitin karşılık geldiği indexi bulduğumuzda, alfabedeki indexinci karakter bize metindeki n. karakteri verir.
Böylelikle problemi O(Bit Count) zamanda çözebildik. Bit işlemleri genellikle hardware seviyesinde desteklendiği bunları yapabilecek cpu instructionlara sahip oluyor. Bunu bildiğimize göre O(1) zamanda çözülmüştür diyebiliriz.
|
|
hidden
The Review Is the Action Item
2024/05/30The Review Is the Action ItemI like to consider running an incident review to be its own action item. Other follow-ups emerging from it are a plus, but the point is to learn from incidents, and the review gives room for that to happen.This is no…
via Ferd.caFinding a New Software Developer Job
For the first time ever, I was laid off, and had to find a new software developer job. I managed to find a new one, but it took longer than I thought, and it was a lot of work. I … Continue reading →
via Henrik Warne's blogHOWTO: Change your behavior
In theory, behavior change should be easy. At first glance, it seems like you control your behavior. So, if you desire different behavior, why doesn’t your behavior change as instantly as your desire to change it? In short, lasting change of habitual behavio…
via Matt Might's blog