LeetCode içerisinde bulunan “Rotate Image” sorusunun açıklaması ve çözümü. Sizen matris olarak verilen bir resmi, saat yönünde 90 derece döndürmeniz isteniyor. Genel olarak burada ilk yapmamız gereken matrisi transpose etmemiz (https://en.wikipedia.org/wiki/Transpose), daha sonra da her satırı ters çevirmemiz bizim için yeterli oluyor.
Bu arada bunu in-place olarak, yani ek bir matris oluşturmadan, verilen matrisin içerisinde yapmanız gerekiyor.
Ek olarak, 12:31 ile 16:36 arası yaptığım hatayı bulmaya çalışıyorum, bu aralığı pas geçebilirsiniz.
You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise).
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.
LeetCode içerisinde bulunan “Task Scheduler” sorusunun açıklaması ve çözümü. Sizen verilen görev listesi ve N sayısına istinaden, aynı task’lar arasında en az N kadar farklı task çalışması koşulu ile, en az kaç seferde bütün taskların çalıştırılabileceği soruluyor. LeetCode’a göre daha önce Facebook mülakatlarında sorulmuş sorulardan biriymiş.
Given a characters array tasks, representing the tasks a CPU needs to do, where each letter represents a different task. Tasks could be done in any order. Each task is done in one unit of time. For each unit of time, the CPU could complete either one task or just be idle.
However, there is a non-negative integer n that represents the cooldown period between two same tasks (the same letter in the array), that is that there must be at least n units of time between any two same tasks.
Return the least number of units of times that the CPU will take to finish all the given tasks.
Example 1:
Input: tasks = [“A”,”A”,”A”,”B”,”B”,”B”], n = 2
Output: 8
Explanation: A — B — idle — A — B — idle — A — B
There is at least 2 units of time between any two same tasks.
Example 2:
Input: tasks = [“A”,”A”,”A”,”B”,”B”,”B”], n = 0
Output: 6
Explanation: On this case any permutation of size 6 would work since n = 0.
[“A”,”A”,”A”,”B”,”B”,”B”]
[“A”,”B”,”A”,”B”,”A”,”B”]
[“B”,”B”,”B”,”A”,”A”,”A”]
…
And so on.
Example 3:
Input: tasks = [“A”,”A”,”A”,”A”,”A”,”A”,”B”,”C”,”D”,”E”,”F”,”G”], n = 2
Output: 16
Explanation:
One possible solution is
A — B — C — A — D — E — A — F — G — A — idle — idle — A — idle — idle — A
LeetCode içerisinde bulunan “Longest Word in Dictionary” sorusunun açıklaması ve çözümü. Bu soruda size verilen bir string array içerisinde, kendisi hariç diğer kelimelerden birer harf alarak oluşturulabilecek en uzun kelimeyi bulmanız isteniyor. Eğer birden fazla varsa, alfabetik olarak önce gelen kelimeyi yazdırmanız isteniyor.
Given a list of strings words representing an English Dictionary, find the longest word in words that can be built one character at a time by other words in words.
If there is more than one possible answer, return the longest word with the smallest lexicographical order. If there is no answer, return the empty string.
Example 1:
Input: words = [“w”,”wo”,”wor”,”worl”, “world”]
Output: “world”
Explanation: The word “world” can be built one character at a time by “w”, “wo”, “wor”, and “worl”.
Example 2:
Input: words = [“a”, “banana”, “app”, “appl”, “ap”, “apply”, “apple”]
Output: “apple”
Explanation: Both “apply” and “apple” can be built from other words in the dictionary. However, “apple” is lexicographically smaller than “apply”.
Note:
All the strings in the input will only contain lowercase letters.
The length of words will be in the range [1, 1000].
The length of words[i] will be in the range [1, 30].
Günümüzde programcıların internette en çok başvurduğu yer Stack Overflow. Peki bu siteyi gerçekten kullanmayı biliyor muyuz? Nasıl kullanılır? Hangi sorular sorulabilir? Hangi sorular sorulmamalıdır? Kuralları nelerdir? Türkiye’deki 3. en yüksek reputation puanına sahip kişi olarak (kaynak: https://data.stackexchange.com/stackoverflow/query/90536/top-users-turkey) bu videoda bu altın değerindeki siteden en iyi şekilde nasıl yararlanabileceğinizi ve kurallarını anlatmaya çalıştım.
➡️ Stack Overflow nedir ve ilk olarak ne zaman kullanmaya başladım?
Stack Overflow en basit tabiriyle bir programlama soru cevap sitesi. Programlama ile ilgili bir sorunuz varsa sorabileceğiniz, başka programcıların sorularını yanıtlayabileceğiniz ve onlarla fikir alışverişi yapabileceğiniz (meta siteleri) bir internet sitesi. 2008 yılında Jeff Atwood ve Joel Spolsky tarafında kuruldu, ben de özellikle 2012 yılında askerden geldikten sonraki dönemde yoğun olarak kullanmaya başladım.
Bir sorunun kapatılması, o sorunun muhtemelen Stack Overflow’a uygun olmadığı anlamına gelir. Kapatılan sorulara cevap veremezsiniz. Bu sayede kötü cevapların da önüne geçilmiş olur. Kapatılma nedenlerine bakacak olursak;
💡 Duplicate: Sorunuza çok benzer olan bir soru daha önce sorulmuş.
💡 Off-topic: Sorunuz konu olarak bu siteye uygun değil.
💡 Needs details or clarity: Sorunuz yeterince açık değil veya flu.
💡 Needs more focus: Tek bir soruda “tek bir soru”
💡 Opinion-based: Fikir bazlı sorular.
Eğer reputation puanınız 3000’den fazlaysa bir soruyu kapatılması için oylayabilirsiniz. Unutmayın ki, kapatılan bir soru her zaman tekrar açılabilir. Kaynak: https://stackoverflow.com/help/closed-questions
➡️ Nasıl iyi bir soru sorabilirim?
💡 Ara, ve araştır.
💡 Sorununuzu açık bir şekilde belirten bir başlık
💡 Önce açıklama, sonra kod
💡 Diğer kişilerin de aynı hatayı almasını sağlayın.
Reputation, topluluğun size ne kadar güvendiğinin bir ölçüsüdür; meslektaşlarınızı ne hakkında konuştuğunuzu bildiğinize ikna ederek kazanılır. Ne kadar çok reputation kazanırsanız, o kadar çok ayrıcalık kazanırsınız ve sitede o kadar çok araca erişebilirsiniz.
LeetCode içerisinde bulunan “Global and Local Inversions” sorusunun açıklaması ve çözümü. Bu soruda size verilen “global inversions” ve “local inversions” tanımlarına göre eşit olup olmadığı soruluyor.
LeetCode içerisinde bulunan “Maximum Number of Balloons” sorusunun açıklaması ve çözümü. Bu soruda size verilen kelime içerisindeki harfleri bir defa kullanarak, “balloon” kelimesinin kaç defa yazdırılabileceği soruluyor.
LeetCode içerisinde bulunan “Reverse Linked List” sorusunun açıklaması ve çözümü. Bu soruda head olarak verilen linked list‘in tüm node’larını tersine çevirmeniz isteniyor.
LeetCode içerisinde bulunan “Remove All Adjacent Duplicates In String” sorusunun açıklaması ve çözümü. Bu soruda verilen string’in, yan yana aynı aynı olan tüm karakterleri silinerek, en sonda yan yana aynı karakter kalmayacak şekilde hazırlamanız isteniyor.
Given a string S of lowercase letters, a duplicate removal consists of choosing two adjacent and equal letters, and removing them.
We repeatedly make duplicate removals on S until we no longer can.
Return the final string after all such duplicate removals have been made. It is guaranteed the answer is unique.
Example 1:
Input: “abbaca”
Output: “ca”
Explanation: For example, in “abbaca” we could remove “bb” since the letters are adjacent and equal, and this is the only possible move. The result of this move is that the string is “aaca”, of which only “aa” is possible, so the final string is “ca”.
Programlama becerinizi geliştirmek için yapabileceğiniz en etkili yöntemlerden bahsetmeye çalışacağım bu videoda. Hepsi muhtemelen daha önce duyduğunuz kavramlar fakat hepsinin teker teker incelenmesi ve öğrenilmesi gereken konular olduğunu düşünüyorum.
➡️ Sizden daha zeki insanlarla çalışın. Söylendiği gibi “Bir odada en zeki sizseniz, muhtemelen yanlış odadasınızdır”. Gerçekten de öyle. Sizden daha zeki insanlarla çalışmak sizi her zaman yukarıya çekecektir. Onlardan çok şey öğreneceksiniz bu süreçte. Ayrıca zeki insanlarla çalışmaya nasıl alışabileceğiniz ile ilgili şuna göz atabilirsiniz: https://www.quora.com/How-did-you-adjust-to-working-with-smarter-people
➡️ Herkesi dinleyin. Junior, senior, kıdemli ve guru olsun, herkesi dinleyin. İş ünvanı her şey demek değildir. Kimden farklı fikirler alabileceğinizi tahmin edemezsiniz.
➡️ Farklı diller ve framework’ler öğrenmek. Farklı diller ve framework’ler öğrenmek, bunları düzenli olarak kullanmayacak olsanız bile size farklı bir bakış açısı katar. Bu tarz yapıların genel programlama yapılarını nasıl kullandıklarını ve sizin hali hazırda kullandığınız yapılar ile karşılaştırarak aralarındaki farkları öğrenebilirsiniz.
➡️ Best practice’leri iyi öğrenin. Yazdığınız kod ve ortamlar ile ilgili best practice’leri en iyi şekilde öğrenin. Bu pratikler yıllar boyunca insanların tecrübeleri ile oluşmuş şeylerdir. Bunları dikkate alın ve düzenli olarak bunları uygulamaya çalışın. Günümüzde bu pratikleri uygulamanızı sağlayabilecek bir çok uygulama da mevcut. Faydalanın. https://en.wikipedia.org/wiki/Best_coding_practices
➡️ Zeki insanların hataları nasıl ele aldığını izleyin. Bu insanların hata ve sorun durumlarını nasıl ele aldıklarını gözlemleyin. Sorunun temeline inme yöntemlerini ve çözüm bulma becerilerini iyi olarak öğrenin.
➡️ Yazdığınız kodtan daha çok kod okuyun. Kod okumak zor olabilir sizin için. Eskiler “iyi programcılar yazdıkları kodtan daha fazla kod okurlar.” derler. Kesinlikle katıldığım bir önerme. Profesyonel insanların kodlarını okuyun. Hem zevk alırsınız, hem de çok şey öğrenirsiniz. Ayrıca şu linklere de göz atabilirsiniz;
➡️ Düzenli spor yapın. Sadece programlama için değil, hayatın her alanında gerekli spor yapmak. O yüzden düzenli olarak (tavsiyem koşu) spor yapmanızı şiddetle tavsiye ederim.
LeetCode içerisinde bulunan “Middle of the Linked List” sorusunun açıklaması ve çözümü. Bu soruda verilen linked list içerisindeki orta node’u bulmanız isteniyor. Eğer iki tane orta node varsa, ikinci node’u döndürmelisiniz.