LeetCode Çözümlerİ – 1189. Maximum Number of Balloons

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 1189. Maximum Number of Balloons: https://leetcode.com/problems/maximum-number-of-balloons/

➡️ Problem açıklaması:

Given a string text, you want to use the characters of text to form as many instances of the word “balloon” as possible.

You can use each character in text at most once. Return the maximum number of instances that can be formed.

Example 1:

Input: text = “nlaebolko”

Output: 1

Example 2:

Input: text = “loonbalxballpoon”

Output: 2

Example 3:

Input: text = “leetcode”

Output: 0

Constraints:

1 <= text.length <= 10^4

text consists of lower case English letters only.

LeetCode Çözümlerİ – 206. Reverse Linked List

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 206. Reverse Linked List: https://leetcode.com/problems/reverse-linked-list/

🔥 Bahsettiğim makale linki: https://www.cs.cmu.edu/~adamchik/15-121/lectures/Linked%20Lists/linked%20lists.html

➡️ Problem açıklaması:

Reverse a singly linked list.

Example:

Input: 1–2–3–4–5–NULL

Output: 5–4–3–2–1–NULL

Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

LeetCode Çözümlerİ – 1047. Remove All Adjacent Duplicates In String

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.

🔥 LeetCode 1047. Remove All Adjacent Duplicates In String: https://leetcode.com/problems/middle-of-the-linked-list/

➡️ Problem açıklaması:

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”.

Note:

1 <= S.length <= 20000

S consists only of English lowercase letters.

Programlama Becerİnİzİ Gelİştİrmek İçİn Uygulayabİleceğİnİz 8 madde

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.

➡️ Jack of all trades, master of none “Hiçbirinin ustası olmayın, ancak çoğu zaman bir ustadan daha iyi olun”. Evet biraz karmaşık bir tavsiye gibi gelebilir ama, tıpkı Moore yasasının dediği gibi: “Bildiğiniz şeylerin yarısı 18-24 ay içinde modası geçmiş olacak”. https://en.wikipedia.org/wiki/Jack_of_all_trades,_master_of_none ve https://tr.wikipedia.org/wiki/Moore_yasas%C4%B1

➡️ 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;

💡 Reading other peoples code – https://youtu.be/mrXHf71lYrs

💡 Learn to Read the Source, Luke – https://blog.codinghorror.com/learn-to-read-the-source-luke/

➡️ 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.

💡 Why Programmers Should Exercise – http://gallabytes.com/2014/02/why-programmers-should-exercise.html

💡 Sports and Programming – https://christinalee.github.io/DCLondon2019/

💡 How important is exercising for programmers? Does it help with becoming a better programmer? – https://www.quora.com/How-important-is-exercising-for-programmers-Does-it-help-with-becoming-a-better-programmer

Sizlerin de verebileceğiniz tavsiyeler varsa videonun yorumlar kısmına yazabilirsiniz.

LeetCode Çözümlerİ – 876. Middle of the Linked List

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.

🔥 LeetCode 876. Middle of the Linked List: https://leetcode.com/problems/middle-of-the-linked-list/

➡️ Problem açıklaması:

Given a non-empty, singly linked list with head node head, return a middle node of linked list.

If there are two middle nodes, return the second middle node.

Example 1:

Input: [1,2,3,4,5]

Output: Node 3 from this list (Serialization: [3,4,5])

The returned node has value 3. (The judge’s serialization of this node is [3,4,5]).

Note that we returned a ListNode object ans, such that: ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL.

Example 2:

Input: [1,2,3,4,5,6]

Output: Node 4 from this list (Serialization: [4,5,6])

Since the list has two middle nodes with values 3 and 4, we return the second one.

LeetCode Çözümlerİ – 14. Longest Common Prefix

LeetCode içerisinde bulunan “Longest Common Prefix” sorusunun açıklaması ve çözümü. Bu soruda verilen string’lerin hepsinde ortak olan en uzun ön ek’i bulmanız isteniyor.

🔥 LeetCode 14. Longest Common Prefix: https://leetcode.com/problems/longest-common-prefix/

➡️ Problem açıklaması:

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string “”.

Example 1:

Input: strs = [“flower”,”flow”,”flight”]

Output: “fl”

Example 2:

Input: strs = [“dog”,”racecar”,”car”]

Output: “”

Explanation: There is no common prefix among the input strings.

Constraints:

0 <= strs.length <= 200

0 <= strs[i].length <= 200

strs[i] consists of only lower-case English letters.

LeetCode Çözümlerİ – 141. Linked List Cycle

LeetCode içerisinde bulunan “Linked List Cycle” sorusunun açıklaması ve çözümü. Bu soruda head’i verilen bir linked list’in, içerisinde döngüsel bir yapı olup olmadığı soruluyor. Sorunun çözümü biraz karmaşık gelebilir bazı arkadaşlar için, o yüzden görseller ile de anlatmaya çalıştım, umarım anlaşılabilmişimdir.

🔥 LeetCode 141. Linked List Cycle: https://leetcode.com/problems/linked-list-cycle/

➡️ Problem açıklaması:

Given head, the head of a linked list, determine if the linked list has a cycle in it.

There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the next pointer. Internally, pos is used to denote the index of the node that tail’s next pointer is connected to. Note that pos is not passed as a parameter.

Return true if there is a cycle in the linked list. Otherwise, return false.

Example 1:

Input: head = [3,2,0,-4], pos = 1

Output: true

Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed).

Example 2:

Input: head = [1,2], pos = 0

Output: true

Explanation: There is a cycle in the linked list, where the tail connects to the 0th node.

Example 3:

Input: head = [1], pos = -1

Output: false

Explanation: There is no cycle in the linked list.

Constraints:

The number of the nodes in the list is in the range [0, 104].

-105 lessEqual Node.val lessEqual 105

pos is -1 or a valid index in the linked-list.

Follow up: Can you solve it using O(1) (i.e. constant) memory?

LeetCode Çözümlerİ – 1221. Split a String in Balanced Strings

LeetCode içerisinde bulunan “Split a String in Balanced Strings” sorusunun açıklaması ve çözümü. Bu soruda verilen string’i en fazla kaç adet dengeli (R ve L harfleri sayısı eşit) string’e ayırabileceğiniz soruluyor.

🔥 LeetCode 1221. Split a String in Balanced Strings: https://leetcode.com/problems/split-a-string-in-balanced-strings/

➡️ Problem açıklaması:

Balanced strings are those who have equal quantity of ‘L’ and ‘R’ characters.

Given a balanced string s split it in the maximum amount of balanced strings.

Return the maximum amount of splitted balanced strings.

Example 1:

Input: s = “RLRRLLRLRL”

Output: 4

Explanation: s can be split into “RL”, “RRLL”, “RL”, “RL”, each substring contains same number of ‘L’ and ‘R’.

Example 2:

Input: s = “RLLLLRRRLR”

Output: 3

Explanation: s can be split into “RL”, “LLLRRR”, “LR”, each substring contains same number of ‘L’ and ‘R’.

Example 3:

Input: s = “LLLLRRRR”

Output: 1

Explanation: s can be split into “LLLLRRRR”.

Example 4:

Input: s = “RLRRRLLRLL”

Output: 2

Explanation: s can be split into “RL”, “RRRLLRLL”, since each substring contains an equal number of ‘L’ and ‘R’

Constraints:

1 <= s.length <=1000

s[i] = ‘L’ or ‘R’

İstanbul Maratonunda 10 KM Koştum!

Dün İstanbul maratonunun 10 KM olanını İBB Maltepe Sahil Spor Tesislerinde tamamladım. Öncelikle bu tesisleri çok beğendimi söylemek isterim. Koşu parkuru gayet güzel ve bakımlı. Girişte sadece eNabız üzerinden grip aşısı riskinizin olmaması gerekiyor şu andaki koronavirüs nedeniyle.

Bu videoda neden koştuğumu ve koşmanın benim açımdan ne kadar önemli olduğunu ve neden herkese tavsiye ettiğimi anlatmaya çalıştım.

Teşekkürler @İBBSporİstanbul

🏃‍♂️🏃‍♂️ Koşmaya başlayacaklara faydalı linkler:

➡️ https://www.runnersworld.com/uk/training/beginners/a772727/how-to-start-running-today/

➡️ https://www.reddit.com/r/coolguides/comments/a4dwil/how_to_start_running/

➡️ https://www.reddit.com/r/running/comments/37yx5y/things_that_have_helped_me_as_a_beginning_runner/

LeetCode Çözümlerİ – 482. License Key Formatting

LeetCode içerisinde bulunan “License Key Formatting” sorusunun açıklaması ve çözümü. Bu soruda verilen string’i bir lisans key formatında yazdırmanız isteniyor. Sorunun açıklaması biraz garip, o yüzden pek takılmayın bence buna.

🔥 LeetCode 482. License Key Formatting: https://leetcode.com/problems/license-key-formatting/

➡️ Problem açıklaması:

You are given a license key represented as a string S which consists only alphanumeric character and dashes. The string is separated into N+1 groups by N dashes.

Given a number K, we would want to reformat the strings such that each group contains exactly K characters, except for the first group which could be shorter than K, but still must contain at least one character. Furthermore, there must be a dash inserted between two groups and all lowercase letters should be converted to uppercase.

Given a non-empty string S and a number K, format the string according to the rules described above.

Example 1:

Input: S = “5F3Z-2e-9-w”, K = 4

Output: “5F3Z-2E9W”

Explanation: The string S has been split into two parts, each part has 4 characters. Note that the two extra dashes are not needed and can be removed.

Example 2:

Input: S = “2-5g-3-J”, K = 2

Output: “2-5G-3J”

Explanation: The string S has been split into three parts, each part has 2 characters except the first part as it could be shorter as mentioned above.

Note:

The length of string S will not exceed 12,000, and K is a positive integer.

String S consists only of alphanumerical characters (a-z and/or A-Z and/or 0-9) and dashes(-).

String S is non-empty.