LeetCode Çözümleri – 242. Valid Anagram

LeetCode içerisinde bulunan “Valid Anagram” sorusunun açıklaması ve çözümü. Verilen iki string‘ten, biri diğerinin anagramı olup olmadığı soruluyor.

✨ Anagram nedir? https://tr.wikipedia.org/wiki/Anagram

Anagram, bir sözcüğün veya sözcük grubunun harflerinin değişik düzenle başka bir sözcüğü veya sözcük grubunu oluşturmasıdır.

Türkçe bir anagram örneği: Bahriyeli = Harbiyeli

✨ LeetCode 242. Valid Anagram: https://leetcode.com/problems/valid-anagram/

➡️ Problem açıklaması:

Given two strings s and t , write a function to determine if t is an anagram of s.

Example 1:

Input: s = “anagram”, t = “nagaram”

Output: true

Example 2:

Input: s = “rat”, t = “car”

Output: false

Note: You may assume the string contains only lowercase alphabets.

Follow up: What if the inputs contain unicode characters? How would you adapt your solution to such case?

LeetCode Çözümleri – 75. Sort Colors

LeetCode içerisinde bulunan “Sort Colors” sorusunun açıklaması ve çözümü. Bu soruda size karışık olarak verilen kırmızı, beyaz ve mavi renklerden (sırasıyla 0, 1 ve 2 ile ifade ediliyor), önce tüm kırmızılar, sonra tüm beyazlar ve en son tüm maviler olacak şekilde, ekstra bir alan kullanmadan sıralamanız isteniyor.

➡️ Quick sort (Hızlı sıralama) nedir?

✨ Wikipedia açıklaması: https://tr.wikipedia.org/wiki/H%C4%B1zl%C4%B1_s%C4%B1ralama

✨ Geeksforgeeks açıklaması: https://www.geeksforgeeks.org/quick-sort/

✨ Algoritmanın görsel açıklaması: http://sorting.at/ ve https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html

🔥 LeetCode 75. Sort Colors: https://leetcode.com/problems/sort-colors/

➡️ Problem açıklaması:

Given an array nums with n objects colored red, white, or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white, and blue.

Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.

Follow up:

Could you solve this problem without using the library’s sort function?

Could you come up with a one-pass algorithm using only O(1) constant space?

Example 1:

Input: nums = [2,0,2,1,1,0]

Output: [0,0,1,1,2,2]

Example 2:

Input: nums = [2,0,1]

Output: [0,1,2]

Example 3:

Input: nums = [0]

Output: [0]

Example 4:

Input: nums = [1]

Output: [1]

Constraints: n == nums.length

1 <= n <= 300

nums[i] is 0, 1, or 2.

LeetCode Çözümleri – 290. Word Pattern

LeetCode içerisinde bulunan “Word Pattern” sorusunun açıklaması ve çözümü. Bu soruda size verilen iki adet string içerisinde, kelimeler ve harfler olarak aynı tasarıma sahip olup olmadığı soruluyor.

🔥 LeetCode 290. Word Pattern: https://leetcode.com/problems/word-pattern/

➡️ Problem açıklaması:

Given a pattern and a string s, find if s follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in s.

Example 1:

Input: pattern = “abba”, s = “dog cat cat dog”

Output: true

Example 2:

Input: pattern = “abba”, s = “dog cat cat fish”

Output: false

Example 3:

Input: pattern = “aaaa”, s = “dog cat cat dog”

Output: false

Example 4:

Input: pattern = “abba”, s = “dog dog dog dog”

Output: false

Constraints:

1 lessEqual pattern.length lessEqual 300

pattern contains only lower-case English letters.

1 lessEqual s.length lessEqual 3000

s contains only lower-case English letters and spaces ‘ ‘.

s does not contain any leading or trailing spaces.

All the words in s are separated by a single space.

Özgeçmişlerde Not Ortalamasının Önemi ve Net Hedefler

Yazılımcının özgeçmişinde not ortalamasının önemi nedir? Ne zaman özgeçmişe yazılmalı, ne zaman yazılmamalı? Hedeflediğiniz pozisyonlar konusunda nasıl daha net olabilirsiniz? Elde ettiğiniz deneyimleri ve projeleri nasıl listelemelisiniz? Bu videoda bu konulardan bahsetmeye çalıştım.

➡️ Herkes verdiği emeğim karşılığını almak ister, bu gayet doğal bir durum. Bir çiftçi ektiği mısırın mahsulünü nasıl hak ediyorsa, bir öğrenci de çok çalışarak elde ettiği yüksek not ortalamasının mahsulünü almak ister. Standart bir testin yokluğunda, not ortalaması bu görevi görür. Yüksek bir not ortalaması sizin kodlama konusunda iyi olduğunuzu göstermez, ama işe alan kişiler tarafından sizi daha uygun bir konuma getirir.

➡️ Düşük bir not ortalamanız varsa, fakat oldukça iyi iş deneyimleriniz varsa, not ortalamanızı özgeçmişinizde listelemeyebilirsiniz. Deneyimleriniz ve tecrübeleriniz ile karşınızdaki etkilediyseniz, not ortalamasının ne önemi var ki? Ancak not ortalamanız düşükse ve iş tanımı için yeterli yeteneğiniz yoksa, belki de bunlardan birini daha çok geliştirmeli ve iş başvurularını daha sonra değerlendirmelisiniz.

➡️ Üniversitedeki her ders sizin çalışma hayatınızda kullanacağınız dersler değil, bunu hepimiz biliyoruz. Nadir bir durum olsa da, not ortalamanız, ilginiz olmayan, diğer alandaki dersler nedeniyle düşük olabilir. Örneğin, programlama ile ilgili derslerde iyi, fakat alanınızın dışındaki derslerde kötü olabilirsiniz. Bu gibi durumlarda, özgeçmişinize transkript bile eklemeyi düşünebilirsiniz.

➡️ Ayrıca not ortalamanızı listelediyseniz, “kaç üzerinden” olduğunu da listelemenizi tavsiye ederim. Eğer karşınızdaki kişi okuduğunuz üniversitenin derecelendirme sistemine aşina değilse “3.6” ona hiçbir anlam ifade etmeyecektir. Bu durumda “3.6 / 4.0” şeklinde yazabilirsiniz örneğin.

➡️ Ek olarak, hedefleriniz konusunda net olun, hangi pozisyona başvuruyorsunuz? İş tanımını doğru bir şekilde okuyun ve başvurduğunuz işi öğrenin.

➡️ “İş deneyimi” herhangi bir iş deneyimi anlamına gelmez; “ilgili” iş deneyimi anlamına gelir. Nitelik, nicelikten önce gelir.

➡️ Açıklamaların kapsamlı ama öz olduğundan emin olun. “Yazılım mühendisliği stajyeri – kod yazdım” demek yerine, hiçbir şey yazmamak daha iyi olabilir, bunu düşünün.

https://www.quora.com/Does-GPA-matter-for-a-CS-student-who-want-to-work-at-a-tech-company

LeetCode Çözümleri – 434. Number of Segments in a String

LeetCode içerisinde bulunan “Number of Segments in a String” sorusunun açıklaması ve çözümü. Bu soruda size verilen string içerisinde, “segment” yani boşluk karakteri içermeyen karakterler bütünü sayısını bulmanız isteniyor.

🔥 LeetCode 434. Number of Segments in a String: https://leetcode.com/problems/number-of-segments-in-a-string/

➡️ Problem açıklaması:

You are given a string s, return the number of segments in the string.

A segment is defined to be a contiguous sequence of non-space characters.

Example 1:

Input: s = “Hello, my name is John”

Output: 5

Explanation: The five segments are [“Hello,”, “my”, “name”, “is”, “John”]

Example 2:

Input: s = “Hello”

Output: 1

Example 3:

Input: s = “love live! mu’sic forever”

Output: 4

Example 4:

Input: s = “”

Output: 0

Constraints:

0 <= s.length <= 300

s consists of lower-case and upper-case English letters, digits or one of the following characters “!@#$%^&*()_+-=’,.:”.

The only space character in s is ‘ ‘.

LeetCode Çözümleri – 674. Longest Continuous Increasing Subsequence

LeetCode içerisinde bulunan “Longest Continuous Increasing Subsequence” sorusunun açıklaması ve çözümü. Bu soruda sizden sürekli artışın olduğu en uzun alt diziyi bulmanız isteniyor. Bu tarz sorularda “Sliding Window” tekniği çok yaygın kullanılan bir tekniktir.

✨ Sliding Window tekniği nedir?

🟩 What is Sliding Window Algorithm? Examples?: https://stackoverflow.com/q/8269916/447156

🟩 An Introduction to Sliding Window Algorithms: https://levelup.gitconnected.com/an-introduction-to-sliding-window-algorithms-5533c4fe1cc7

🟩 How to Solve Sliding Window Problems: https://medium.com/outco/how-to-solve-sliding-window-problems-28d67601a66

🟩 Sliding Window Algorithm: https://www.baeldung.com/cs/sliding-window-algorithm

🔥 LeetCode 674. Longest Continuous Increasing Subsequence: https://leetcode.com/problems/longest-continuous-increasing-subsequence/

➡️ Problem açıklaması:

Given an unsorted array of integers nums, return the length of the longest continuous increasing subsequence (i.e. subarray). The subsequence must be strictly increasing.

A continuous increasing subsequence is defined by two indices l and r (l less r) such that it is [nums[l], nums[l + 1], …, nums[r – 1], nums[r]] and for each l lessEqual i less r, nums[i] less nums[i + 1].

Example 1:

Input: nums = [1,3,5,4,7]

Output: 3

Explanation: The longest continuous increasing subsequence is [1,3,5] with length 3. Even though [1,3,5,7] is an increasing subsequence, it is not continuous as elements 5 and 7 are separated by element 4.

Example 2:

Input: nums = [2,2,2,2,2]

Output: 1

Explanation: The longest continuous increasing subsequence is [2] with length 1. Note that it must be strictly increasing.

Constraints:

0 <= nums.length <= 10^4

-10^9 <= nums[i] <= 10^9

Boş Zamanlarda Kod Yazmamak Beni Kötü Programcı Yapar mı?

Boş zamanlarımda kod yazmamak beni kötü bir programcı mı yapar? Sadece işte yaptığım programlama benim için yeterli olmaz mı? Bu ikisi arasındaki denge nasıl kurulur? Bir boyacı, boş zamanlarında da boya yaparak daha iyi bir boyacı mı olur? Bu konulardan bahsetmeye çalıştım bu videoda.

➡️ Videonun başında da bahsettiğim gibi, programlamada “pratik” yapmak gerçekten çok önemli. Belki de ben de bu yüzden Twitch‘te yaptığımız CodinGame yayınlarına oldukça önem veriyorum. Fakat “pratik” her şey demek değildir. Bunun yanında, programcı olarak kazanabileceğiniz önemli yetenekler de mevcut. Bunlara örnek olarak aşağıdakileri verebiliriz;

✨ Çalışma arkadaşlarınız ile ilişkileriniz

✨ Bir “takım oyuncusu” olmak

✨ Farklı bir programlama dili ve/veya framework öğrenmek

✨ Bir enstrüman çalmak

➡️ Bir diğer açıdan bakarsak, yazılım geliştirme sektöründe olan herkes bu işi severek yapmıyor. Bu sektörün maddi açıdan kendileri için yeterli bir getirisi olması bazı insanlar için en büyük nedenlerden biri. Bu kişilerin fikrimce potansiyellerinin yeterince kullanmadıklarını düşünüyorum. Çünkü bir çok insan, severek yaptıkları işler konusunda, bunlardan bir “hobi” oluşturma eğiliminde oluyorlar. Yani ben zaten severek yaptığım işi yapıyorum, bunun karşılığında bir ücret alıyorum, ek olarak “farklı bir şeyler de üretebilirim” düşüncesiyle bunu bir hobi haline getiriyorlar.

➡️ Tabi bu söylediklerimi, işyerinde yaptıkları işlerden tatmin olanları kapsamıyor. Eğer siz bu şanslı gruptaysanız, boş zamanlarınızda programlama yapmamak gayet doğal bir hal alır. Yine de, yazılım geliştirme gibi rekabetin olduğu bir ortamda, boş zamanlarında kendilerini farklı şekilde geliştiren kişiler ile rekabet etmek durumundasınız.

✨ Ayrıca Matt Might’ın “Tips for work-life balance” isimli yazısını okumanızı tavsiye ederim: http://matt.might.net/articles/work-life-balance/

✨ Stack Overflow’daki “Nobody has to lose in work/life balance” yazısı: https://stackoverflow.blog/2020/07/01/nobody-has-to-lose-in-work-life-balance/

LeetCode Çözümleri – 48. Rotate Image

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.

🔥 LeetCode 48. Rotate Image: https://leetcode.com/problems/rotate-image/

➡️ Problem açıklaması:

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.

Example 1:

Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]

Output: [[7,4,1],[8,5,2],[9,6,3]]

Example 2:

Input: matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]

Output: [[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

Example 3:

Input: matrix = [[1]]

Output: [[1]]

Example 4:

Input: matrix = [[1,2],[3,4]]

Output: [[3,1],[4,2]]

Constraints:

matrix.length == n

matrix[i].length == n

1 <= n <= 20

-1000 <= matrix[i][j] <= 1000

LeetCode Çözümleri – 621. Task Scheduler [Facebook Mülakat Sorusu]

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

🔥 LeetCode 621. Task Scheduler: https://leetcode.com/problems/task-scheduler/

➡️ Problem açıklaması:

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

Constraints:

1 <= task.length <= 10^4

tasks[i] is upper-case English letter.

The integer n is in the range [0, 100].

LeetCode Çözümleri – 720. Longest Word in Dictionary

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.

🔥 LeetCode 720. Longest Word in Dictionary: https://leetcode.com/problems/longest-word-in-dictionary/

➡️ Problem açıklaması:

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