LeetCode – Maximal Rectangle (Java)

Given a 2D binary matrix filled with 0’s and 1’s, find the largest rectangle containing all ones and return its area. Analysis This problem can be converted to the “Largest Rectangle in Histogram” problem. Java Solution public int maximalRectangle(char[][] matrix) { int m = matrix.length; int n = m == 0 ? 0 : matrix[0].length; … Read more

LeetCode – Largest Rectangle in Histogram (Java)

Given n non-negative integers representing the histogram’s bar height where the width of each bar is 1, find the area of largest rectangle in the histogram. Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3]. The largest rectangle is shown in the shaded area, which has area = 10 … Read more

LeetCode – Multiply Strings (Java)

Given two numbers represented as strings, return multiplication of the numbers as a string. Analysis The key to solve this problem is multiplying each digit of the numbers at the corresponding positions and get the sum values at each position. That is how we do multiplication manually. Java Solution public String multiply(String num1, String num2) … Read more

LeetCode – Intersection of Two Arrays II (Java)

Given two arrays, write a function to compute their intersection. Example: Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2]. Java Solution 1 public int[] intersect(int[] nums1, int[] nums2) { HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int i: nums1){ if(map.containsKey(i)){ map.put(i, map.get(i)+1); }else{ map.put(i, 1); } }   ArrayList<Integer> … Read more

LeetCode – Minimum Window Substring (Java)

Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n). For example, S = “ADOBECODEBANC”, T = “ABC”, Minimum window is “BANC”. Java Solution public String minWindow(String s, String t) { HashMap<Character, Integer> goal = new HashMap<>(); int goalSize = … Read more

LeetCode – Divide Two Integers (Java)

Divide two integers without using multiplication, division and mod operator. If it is overflow, return MAX_INT. Analysis This problem can be solved based on the fact that any number can be converted to the format of the following: num=a_0*2^0+a_1*2^1+a_2*2^2+…+a_n*2^n The time complexity is O(logn). Java Solution public int divide(int dividend, int divisor) { //handle special … Read more

LeetCode – Tic-Tac-Toe (Java)

Design a Tic-tac-toe game that is played between two players on a n x n grid. Java Solution 1 – Naive We can simply check the row, column and the diagonals and see if there is a winner. public class TicTacToe {   int[][] matrix;   /** Initialize your data structure here. */ public TicTacToe(int … Read more