# All posts in Algorithms

Problem Statement Write a method to compute all permutations of a string Solution Let’s assume a given string represented by the letters To permute set , we can select the first character, , permute the remainder of the string to get a new list Then, with that new list, we . . . Read more

Problem statement You are given two 32-bit numbers, and , and two bit positions, and . Write a method to set all bits between and in equal to (e g , becomes a substring of located at and starting at ) Example Input: , , , Output: Solution public class . . . Read more

Problem Statement Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal height. Solution We will try to create a binary tree such that for each node, the number of nodes in the left subtree and the right subtree are equal, if possible Algorithm: . . . Read more

Problem statement Given an array of integers, find the second smallest integer in that array. Solution public class SecondSmallestInteger { public static int solve(int[] arr) { int smallest = Integer.MAX_VALUE; int secondSmallest = Integer.MAX_VALUE; ; for (int i = 0; i < arr.length; i++) { if (arr[i] < smallest) { . . . Read more

Problem statement There are stairs, a person standing at the bottom wants to reach the top. The person can climb either stair or stairs at a time. Count the number of ways, the person can reach the top. Solution We can solve this problem recursively. If the person were to . . . Read more

Problem statement Given a linked list, determine if it has a cycle in it. Solution For the solution we are going to use a technique known as the two-pointer technique. That is we will involve two pointers: one slow-runner and the other fast-runner. The slow-runner will move forward 1 list . . . Read more

Problem statement Divide two integers without using multiplication, division and mod operator. If it is overflow, return MAX_INT. Solution Obviously the naive approach to this problem would be to subtract the divisor from the dividend until the dividend becomes less than the divisor, while keeping track of how many times . . . Read more

Problem statement Given a list, nums, of distinct numbers, return all possible unique permutations. Sample input [1,2,1] Sample output [[1, 2, 1], [2, 1, 1], [1, 1, 2]] Solution In another post we showed how this problem can be solved iteratively. We can use the same technique but add a . . . Read more

Problem statement Given a list, nums, of distinct numbers, return all possible permutations. Sample input [1,2,3] Sample output [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] Solution In another post we showed how this problem can be solved using a recursive technique by swapping. We stumbled upon a nice iterative . . . Read more

Problem statement Given a list, nums, of distinct numbers, return all possible permutations. Sample input [1,2,3] Sample output [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] Solution We are using a technique called permutations by swapping. Full code class Solution(object): def swap(self, nums, i, j): tmp = nums[i] nums[i] = . . . Read more