Prefix Sum
Fundamentals The basic template for prefix sum creation is: vector<int> p(n + 1); for (int i = 0: i < n; i++) { p[i + 1] = p[i] + nums[i]; } // sum[i...j] = p[j + 1] - p[i] Someti...
Fundamentals The basic template for prefix sum creation is: vector<int> p(n + 1); for (int i = 0: i < n; i++) { p[i + 1] = p[i] + nums[i]; } // sum[i...j] = p[j + 1] - p[i] Someti...
Best Team With No Conflicts public int bestTeamScore(int[] scores, int[] ages) { int n = ages.length; Integer[] indices = new Integer[n]; for (int i = 0; i < n; i++) { indic...
Arrangement Global and Local Inversions If the 0 occurs at index 2 or greater, then A[0] > A[2] = 0 is a non-local inversion. So 0 can only occur at index 0 or 1. If A[1] = 0, then we must ha...
Arrangement Beautiful Arrangement II public int[] constructArray(int n, int k) { int[] list = new int[n]; // max(k) == n - 1 for (int i = 0, left = 1, right = n; left <= right; i++...
Theorem Triangle area using coordinates [T={\frac {1}{2}}{\big }(x_{A}-x_{C})(y_{B}-y_{A})-(x_{A}-x_{B})(y_{C}-y_{A}){\big }] Triangle inequality In a normed...
Euler’s Theorem In number theory, Euler’s theorem (also known as the Fermat–Euler theorem or Euler’s totient theorem) states that if \(n\) and \(a\) are coprime positive integers, then \(a\) raise...
Pour Water public int[] pourWater(int[] heights, int V, int K) { while (V > 0) { int i = K; while (i > 0 && heights[i] >= heights[i - 1]) { i--; ...
Greedy Minimum Swaps to Make Strings Equal public int minimumSwap(String s1, String s2) { int[] count = new int[2]; for (int i = 0; i < s1.length(); i++) { // ignores matched p...
A* Search A* search algorithm selects the path that minimizes f(n) = g(n) + h(n) where n is the next node on the path g(n) is the cost of the path from the start node to n h(n) is a heuri...
Index Map Longest Substring Without Repeating Characters Dynamic Programming Word Break public boolean wordBreak(String s, List<String> wordDict) { Set<String> dict = new HashSe...