Engineering Blog 馃捇

Welcome to my software engineering blog! I’m currently studying leetcode (algorithms & data structures) and system design. As I go through this process, I will be publishing my study notes. Please reach out on Twitter or LinkedIn if you found something helpful, discovered a mistake, or if you would like to chat!

Leetcode 238: Product of Array Except Self

Problem Statement Description Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i]. The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer. You must write an algorithm that runs in O(n) time and without using the division operation. Examples Example 1: Input: nums = [1,2,3,4] Output: [24,12,8,6] Example 2: Input: nums = [-1,1,0,-3,3] Output: [0,0,9,0,0] Constraints 2 <= nums....

February 20, 2023 路 3 min 路 509 words 路 Me

Leetcode 53: Maximum Subarray

Problem Statement Description Given an integer array nums, find the subarray with the largest sum, and return its sum. Examples Example 1: Input: nums = [-2,1,-3,4,-1,2,1,-5,4] Output: 6 Explanation: The subarray [4,-1,2,1] has the largest sum 6. Example 2: Input: nums = [1] Output: 1 Explanation: The subarray [1] has the largest sum 1. Example 3: Input: nums = [5,4,-1,7,8] Output: 23 Explanation: The subarray [5,4,-1,7,8] has the largest sum 23....

January 24, 2023 路 4 min 路 692 words 路 Me

Dynamic Programming

Definition Dynamic Programming is a very powerful programming paradigm that can be employed to find optimal solutions to problems that possess the following properties: overlapping subproblems and optimal substructure. Overlapping subproblems A problem can be decomposed into smaller subproblems than can be reused multiple time to construct the overall solution The solutions to subproblems are often memoized to avoid re-work and improve time complexity Solutions to subproblems are reused more than once by subsequent solutions Optimal substructure The optimal solution to a problem can be constructed from the optimal solution of overlapping subproblems....

January 23, 2023 路 2 min 路 343 words 路 Me

Leetcode 217: Contains Duplicates

Problem Statement Description Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct. Examples Example 1: Input: nums = [1,2,3,1] Output: true Example 2: Input: nums = [1,2,3,4] Output: false Example 3: Input: nums = [1,1,1,3,3,4,3,2,4,2] Output: true Constraints 1 <= nums.length <= 105 -109 <= nums[i] <= 109 Key Insights This is a very simple problem that introduces the concept of a hash set....

January 18, 2023 路 1 min 路 201 words 路 Me

Leetcode 876: Middle of the Linked List

Problem Statement Description Given the head of a singly linked list, return the middle node of the linked list. If there are two middle nodes, return the second middle node. Examples Example 1: flowchart LR a((1))-->b((2))-->c(3)-->d((4))-->e((5)) Input: head = [1,2,3,4,5] Output: [3,4,5] Explanation: The middle node of the list is node 3. Example 2: flowchart LR a((1))-->b((2))-->c((3))-->d(4)-->e((5))-->f((6)) Input: head = [1,2,3,4,5,6] Output: [4,5,6] Explanation: Since the list has two middle nodes with values 3 and 4, we return the second one....

January 17, 2023 路 3 min 路 487 words 路 Me