 # Group Anagrams

Given an array of strings, group anagrams together. Example: Input: ["eat", "tea", "tan", "ate", "nat", "bat"], Output: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] Note: All inputs will be in lowercase.The order of your output does not matter. Leetcode 6th day challenge C# Program Solution - Easy to Understand public class Solution { public IList<IList<string>> GroupAnagrams(string[] strs) { …

# Best Time to Buy and Sell Stock II

Say you have an array for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum profit. You may complete as many transactions as you like (i.e., buy one and sell one share of the stock multiple times). Note: You may not engage in multiple transactions at the … # Reverse Substrings Between Each Pair of Parentheses

Introduction Hi friends! Welcome to 100 Days of Leetcode Challenge. In this article, we going to see about Reverse Substrings Between Each Pair of Parentheses. Language I took C# programming language to solve this problem. Since language is independent of the problem. You can use whatever language you wish to solve. Only problem solving approach(logic) …

Continue reading Reverse Substrings Between Each Pair of Parentheses # Find Largest Value in Each Tree Row

Hi Geeks! Welcome to 100 Days of Leetcode Challenge. In this article, you going to see about Find Largest Value in Each Tree Row. Day 30 You need to find the largest value in each row of a binary tree. Example: Input: 1 / \ 3 2 / \ \ 5 3 9 Output: [1, …

Continue reading Find Largest Value in Each Tree Row # Move Zeroes

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. Example: Input: [0,1,0,3,12] Output: [1,3,12,0,0] Note: You must do this in-place without making a copy of the array.Minimize the total number of operations. Approach For simple solution, we can do by introducing one variable … # Maximum Sub Array

Hi Geeks! Welcome to 100 Days of Leetcode Challenge. In this article, we going to see about Maximum Subarray. Day 29 Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. Example: Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6. Follow … # Binary Tree Level Order Traversal II

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). For example:Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 return its bottom-up level order traversal as: [ [15,7], [9,20],  ] Solution Iterative Approach /** * Definition …

Continue reading Binary Tree Level Order Traversal II

# Happy Number

Write an algorithm to determine if a number is "happy". A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly … # Average of Levels in Binary Tree

Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array. Example 1: Input: 3 / \ 9 20 / \ 15 7 Output: [3, 14.5, 11] Explanation: The average value of nodes on level 0 is 3, on level 1 is 14.5, and on …

Continue reading Average of Levels in Binary Tree

# Invert Binary Tree

Invert a binary tree. Example: Input: 4 / \ 2 7 / \ / \ 1 3 6 9 Output: 4 / \ 7 2 / \ / \ 9 6 3 1 Solution /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; … # Root To Leaf Sum Binary Tree

Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum. Note: A leaf is a node with no children. Example: Given the below binary tree and sum = 22, 5 / \ 4 8 / / \ 11 …

Continue reading Root To Leaf Sum Binary Tree # Binary Tree Preorder Traversal – Iterative way

Given a binary tree, return the preorder traversal of its nodes' values. Example: Input: [1,null,2,3] 1 \ 2 / 3 Output: [1,2,3] Follow up: Recursive solution is trivial, could you do it iteratively? Iterative Solution /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; …

Continue reading Binary Tree Preorder Traversal – Iterative way # Binary Tree Inorder Traversal

Hi Geeks! In this article, we going to look at the Binary Tree in Inorder Traversal. Given a binary tree, return the inorder traversal of its nodes' values. Example: Input: [1,null,2,3] 1 \ 2 / 3 Output: [1,3,2] Follow up: Recursive solution is trivial, could you do it iteratively? Solution - Recursive approach /** * Definition for a …

Continue reading Binary Tree Inorder Traversal

# Implement an LRU Cache

In this article, I explained about LRU Cache implementation with example. Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and put. get(key) - Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1.put(key, value) - Set or insert the value …

Continue reading Implement an LRU Cache

# Implement Stack using Queues

Implement the following operations of a stack using queues. push(x) -- Push element x onto stack.pop() -- Removes the element on top of the stack.top() -- Get the top element.empty() -- Return whether the stack is empty. Example: MyStack stack = new MyStack(); stack.push(1); stack.push(2); stack.top(); // returns 2 stack.pop(); // returns 2 stack.empty(); // …

Continue reading Implement Stack using Queues

# Implement Queue using Stacks

Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of queue.pop() -- Removes the element from in front of queue.peek() -- Get the front element.empty() -- Return whether the queue is empty. Example: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // returns 1 queue.pop(); // returns …

Continue reading Implement Queue using Stacks

# First Missing Positive

Given an unsorted integer array, find the smallest missing positive integer. Example 1: Input: [1,2,0] Output: 3 Example 2: Input: [3,4,-1,1] Output: 2 Example 3: Input: [7,8,9,11,12] Output: 1 Note: Your algorithm should run in O(n) time and uses constant extra space. Solution With comments public class Solution { public int firstMissingPositive(int[] nums) { int n = …

# Find All Numbers Disappeared in an Array

Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this array. Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count …

Continue reading Find All Numbers Disappeared in an Array

# Find All Duplicates in an Array

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements that appear twice in this array. Could you do it without extra space and in O(n) runtime? Example: Input: [4,3,2,7,8,2,3,1] Output: [2,3] Approach When find a number i, flip the number at position i-1 to negative.If …

Continue reading Find All Duplicates in an Array

# How Many Numbers Are Smaller Than the Current Number

Given the array nums, for each nums[i] find out how many numbers in the array are smaller than it. That is, for each nums[i] you have to count the number of valid j's such that j != i and nums[j] < nums[i]. Return the answer in an array. Example 1: Input: nums = [8,1,2,2,3] Output: [4,0,1,1,3] Explanation: For nums=8 there exist four smaller numbers than …

Continue reading How Many Numbers Are Smaller Than the Current Number # Minimum Remove to Make Valid Parentheses

Introduction In this article, we will see about Minimum Remove to Make Valid Parentheses. We have to remove the minimum number of parentheses to make a string with valid parentheses. BACKGROUND Day 15 of 100 Days of Leetcode Programming Challenge. This problem tests our knowledge in the Stack data structure. LANGUAGE I took C# programming language …

Continue reading Minimum Remove to Make Valid Parentheses # Alphabet Board Path

INTRODUCTION In this article, we will see about Alphabet Board Path. It is one of the interesting problem, find Alphabet Board Path. BACKGROUND Day 14 of 100 Days of Leetcode Programming Challenge. This is one of the top Leetcode Problem. This problem tests our logical skills. LANGUAGE I took C# programming language to solve this … # How to Reorganize String?

INTRODUCTION In this article, we will see about How to Reorganize String? It is one of the interesting problem, Reorganizing string. Background Day 13 of 100 Days of Leetcode Programming Challenge. This is one of the top Leetcode Problem. This problem tests our knowledge in string manipulations and hashing. Related Problems Top K Frequent ElementsHow …

Continue reading How to Reorganize String? # How to Sort Characters By Frequency?

Introduction In this article, we will see about How to sort characters based upon frequency? Background Day 12 of 100 Days of Leetcode Programming Challenge. This is one of the top Leetcode Problem. This problem tests our knowledge in Map data structure and Sorting. Language I took C# programming language to solve this problem. Since …

Continue reading How to Sort Characters By Frequency? # Maximum Depth of Binary Tree

In this article, I explain about how to find the Maximum Depth of Binary Tree which is also called as Height of Binary Tree. Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. Note: A …

Continue reading Maximum Depth of Binary Tree # Look and Say (Count and Say) Sequence

Day 10 Find the nth term in Count and Say Sequence. The Count and Say sequence is the sequence of below integers: "1" "11" "21" "1211" "111221" "312211" "13112221" "1113213211" "31131211131221" "13211311123113112211" "11131221133112132113212221" "3113112221232112111312211312113211" "1321132132111213122112311311222113111221131221" "11131221131211131231121113112221121321132132211331222113112211" "311311222113111231131112132112311321322112111312211312111322212311322113212221" For example: If you have "1", the next line is "11".If you have "11", the next line is …

Continue reading Look and Say (Count and Say) Sequence # Find the Missing Number in an Array

In this article, I explained about how to find the missing number in an array. Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array. Example 1: Input: [3,0,1] Output: 2 Example 2: Input: [9,6,4,2,3,5,7,0,1] Output: 8 Note:Your algorithm should run in linear run time …

Continue reading Find the Missing Number in an Array # Squares of a Sorted Array

Day 8 Welcome to 100 Days of Leetcode Challenge. Given an array of integers A sorted in non-decreasing order, return an array of the squares of each number, also in sorted non-decreasing order. Example 1: Input: [-4,-1,0,3,10] Output: [0,1,9,16,100] Example 2: Input: [-7,-3,2,3,11] Output: [4,9,9,49,121] Note: 1 <= A.length <= 10000-10000 <= A[i] <= 10000A is sorted in non-decreasing order. …

Continue reading Squares of a Sorted Array # How to Reverse Bits – Bit Manipulation

Reversing bits is one of the popular problem. How to reverse bits? In this article, we going to see about how to reverse bits in an efficient way. Reversing bits tests out understanding about bits. One of the top leetcode problem in bits section. Let's see our given problem, Reverse bits of a given 32 …

Continue reading How to Reverse Bits – Bit Manipulation # Rotate Array

Hi Geeks! Welcome to 100 Days of Leetcode Challenge. DAY 6 In this article, I'm going to explain about how to rotate an array efficiently. This is nothing but just playing with Array. Here is our given problem, Given an array, rotate the array to the right by k steps, where k is non-negative. Example 1: Input: [1,2,3,4,5,6,7] and k … # Sqrt(x)

Hi Geeks! Welcome to 100 Days of Leetcode Challenge. Day 5 Today we going to see about implementation of sqrt(x). Let's jump into our given question, Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to be a non-negative integer. Since the return type is an integer, the decimal digits are truncated and only … # Evaluate Reverse Polish Notation

Hi Geeks! Welcome to 100 Days of Leetcode Challenge. Day 4 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another expression. Note: Division between two integers should truncate toward zero.The given RPN expression is always valid. That means the expression would always evaluate …

Continue reading Evaluate Reverse Polish Notation # Finding all Subsets of a given set

Hi Geeks! Welcome to 100 Days Leetcode Challenge. Day 3 In this article, I'll explain about how to find all the subsets of a given set(power set). Here is our given problem, Given a set of distinct integers, nums, return all possible subsets. Note: The solution set must not contain duplicate subsets. Example: Input: nums = [1,2,3] Output: [ , …

Continue reading Finding all Subsets of a given set # Product of Array Except Self

Hi Geeks! Welcome to 100 Days Leetcode Challenge. Day 2 Here is our given problem, Given an array nums of n integers where n > 1,  return an array output such that output[i] is equal to the product of all the elements of nums except nums[i]. Example: Input: [1,2,3,4] Output: [24,12,8,6] Note: Please solve it without division and in O(n). Follow up:Could you solve it with constant space complexity? (The output array does …

Continue reading Product of Array Except Self # Top K Frequent Elements

Hi Geeks! Welcome to 100 Days Leetcode Challenge. Day 1 Here is our given problem, Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [1,1,1,2,2,3], k = 2 Output: [1,2] Example 2: Input: nums = , k = 1 Output:  Note: You may assume k is always valid, 1 ≤ k ≤ …

Continue reading Top K Frequent Elements

Featured # 100 Days Leetcode Challenge

Hi Geeks! Welcome to 100 Days Leetcode challenge. In these days, we going to solve Leetcode's top 100 data structures and algorithm problems. Purpose of 100 Days Leetcode Challenge The main purpose of this challenge is, as a Software Developer we should have a strong command over the algorithms and data structures.Solving these problems daily, …

Continue reading 100 Days Leetcode Challenge # jQuery prepend() with Example

In this tutorial, I will explain about .prepend() method in jQuery. jQuery prepend() method is used to insert the specified content at the beginning of the selected element. It is an inbuilt method in jQuery. If we want to insert our content at the end of the selected elements, then we want to use jQuery …

Continue reading jQuery prepend() with Example # Reverse an Integer Digits

In this article, we going to see about How to Reverse an Integer?  Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321 Example 3: Input: 120 Output: 21 Note:Assume we are dealing with an environment which could only store integers within the …

Continue reading Reverse an Integer Digits # Type Coercion in JavaScript – Well Explained

Hi Geeks! In this article, we going to see about Type Coercion in JavaScript. Most of the people who familiar with JavaScript still have doubt in this topic. Initially, type coercion in JavaScript looks confusing. But when we approach this by using simple examples, it becomes easier to understand. Before going to the examples, let's …

Continue reading Type Coercion in JavaScript – Well Explained # Difference between string and String in C#

In this article, we will learn about what is the difference between string and String in C#. In C#, string is an alias for the String class in .NET. In fact, every C# type has an equivalent in .NET. As another example, short and int in C# map to Int16 and Int32  in .NET. In C#, string is a class. Both string and String class comes from …

Continue reading Difference between string and String in C# # Binary Search – Best Explanation

Hi Geeks! Today, we going to see about Binary Search Algorithm to search an element in an array. When an array is sorted, we can apply the binary search algorithm. There are two ways to search an element in an array. Linear SearchBinary Search Linear Search When an array is unsorted, we can apply the …

Continue reading Binary Search – Best Explanation # How to achieve your GOAL?

Each and everyone should have GOAL in their life. It may be anything. We have to achieve something in our life. Our life should be meaningful. Life is not a game. There is a purpose in our life. I have followed some practical examples, to achieve my goals in life. It's really helping me. So …

Continue reading How to achieve your GOAL? # 13) Remove Nth Node From End of List

Hi friends, in this article we going to see how to remove the Nth node from end of the list. Here is our given problem, Given a linked list, remove the n-th node from the end of list and return its head. Example: Given linked list: 1->2->3->4->5, and n = 2. After removing the second node …

Continue reading 13) Remove Nth Node From End of List You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. Example: Input: (2 -> … This is our given problem, Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false Example 2: Input: 1->2->2->1 Output: true Follow up:Could you do it in O(n) time and O(1) space? How can we APPROACH this problem? By using two ways, we can solve this problem, Slow … # 10) Merge Two Sorted Lists

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. Example: Input: 1->2->4, 1->3->4 Output: 1->1->2->3->4->4 Explanation L1 = 1->4 L2 = 2->3 Output = 1->2->3->4 Create a dummy node. ListNode dummy = new ListNode(0); //dummy = …

Continue reading 10) Merge Two Sorted Lists

Featured # Becoming a Better developer by using the SOLID Design principles

Consider that you are working in good startup based company. There you were assigned with the role of Software Development Engineer. So that, you are the most responsible person for developing core features from end to end. But the problem is, in early stage startups, things are not very organized. So we ended up by …

Continue reading Becoming a Better developer by using the SOLID Design principles # 9) Linked List Cycle II

In this article we going to see about how to Detect Loop in a Linked List and Return the Loop Node. Below is our given problem from Leetcode, Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To represent a cycle in the given linked list, we … # 8) Detect Loop in linked list

In this article, we going to see how to detect loop in a linked list. Here is our given problem, Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed) in the linked list where tail connects … 