2022-11-18
263. Ugly Number
Topic: Math
Difficulty: Easy
Problem:
An ugly number is a positive integer whose prime factors are limited to
Given an integer
Example 1:
Example 2:
Example 3:
Constraints:
•
263. Ugly Number
Topic: Math
Difficulty: Easy
Problem:
An ugly number is a positive integer whose prime factors are limited to
2, 3, and 5.Given an integer
n, return true if n is an ugly number.Example 1:
Input: n = 6
Output: true
Explanation: 6 = 2 × 3
Example 2:
Input: n = 1
Output: true
Explanation: 1 has no prime factors, therefore all of its prime factors are limited to 2, 3, and 5.
Example 3:
Input: n = 14
Output: false
Explanation: 14 is not ugly since it includes the prime factor 7.
Constraints:
•
-2^31 <= n <= 2^31 - 12022-11-19
587. Erect the Fence
Topic: Array, Math, Geometry
Difficulty: Hard
Problem:
You are given an array
You are asked to fence the entire garden using the minimum length of rope as it is expensive. The garden is well fenced only if all the trees are enclosed.
Return the coordinates of trees that are exactly located on the fence perimeter.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/04/24/erect2-plane.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/04/24/erect1-plane.jpg
Constraints:
•
•
•
• All the given points are unique.
587. Erect the Fence
Topic: Array, Math, Geometry
Difficulty: Hard
Problem:
You are given an array
trees where trees[i] = [x_i, y_i] represents the location of a tree in the garden.You are asked to fence the entire garden using the minimum length of rope as it is expensive. The garden is well fenced only if all the trees are enclosed.
Return the coordinates of trees that are exactly located on the fence perimeter.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/04/24/erect2-plane.jpg
Input: points = [[1,1],[2,2],[2,0],[2,4],[3,3],[4,2]]
Output: [[1,1],[2,0],[3,3],[2,4],[4,2]]
Example 2:
Image: https://assets.leetcode.com/uploads/2021/04/24/erect1-plane.jpg
Input: points = [[1,2],[2,2],[4,2]]
Output: [[4,2],[2,2],[1,2]]
Constraints:
•
1 <= points.length <= 3000•
points[i].length == 2•
0 <= x_i, y_i <= 100• All the given points are unique.
2022-11-20
224. Basic Calculator
Topic: Math, String, Stack, Recursion
Difficulty: Hard
Problem:
Given a string
Note: You are not allowed to use any built-in function which evaluates strings as mathematical expressions, such as
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
•
• There will be no two consecutive operators in the input.
• Every number and running calculation will fit in a signed 32-bit integer.
224. Basic Calculator
Topic: Math, String, Stack, Recursion
Difficulty: Hard
Problem:
Given a string
s representing a valid expression, implement a basic calculator to evaluate it, and return the result of the evaluation.Note: You are not allowed to use any built-in function which evaluates strings as mathematical expressions, such as
eval().Example 1:
Input: s = "1 + 1"
Output: 2
Example 2:
Input: s = " 2-1 + 2 "
Output: 3
Example 3:
Input: s = "(1+(4+5+2)-3)+(6+8)"
Output: 23
Constraints:
•
1 <= s.length <= 3 * 10^5•
s consists of digits, '+', '-', '(', ')', and ' '.•
s represents a valid expression.•
'+' is not used as a unary operation (i.e., "+1" and "+(2 + 3)" is invalid).•
'-' could be used as a unary operation (i.e., "-1" and "-(2 + 3)" is valid).• There will be no two consecutive operators in the input.
• Every number and running calculation will fit in a signed 32-bit integer.
2022-11-21
1926. Nearest Exit from Entrance in Maze
Topic: Array, Breadth-First Search, Matrix
Difficulty: Medium
Problem:
You are given an
In one step, you can move one cell up, down, left, or right. You cannot step into a cell with a wall, and you cannot step outside the maze. Your goal is to find the nearest exit from the
Return the number of steps in the shortest path from the
Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/04/nearest1-grid.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/04/nearesr2-grid.jpg
Example 3:
Image: https://assets.leetcode.com/uploads/2021/06/04/nearest3-grid.jpg
Constraints:
•
•
•
•
•
•
•
•
1926. Nearest Exit from Entrance in Maze
Topic: Array, Breadth-First Search, Matrix
Difficulty: Medium
Problem:
You are given an
m x n matrix maze (0-indexed) with empty cells (represented as '.') and walls (represented as '+'). You are also given the entrance of the maze, where entrance = [entrance_row, entrance_col] denotes the row and column of the cell you are initially standing at.In one step, you can move one cell up, down, left, or right. You cannot step into a cell with a wall, and you cannot step outside the maze. Your goal is to find the nearest exit from the
entrance. An exit is defined as an empty cell that is at the border of the maze. The entrance does not count as an exit.Return the number of steps in the shortest path from the
entrance to the nearest exit, or -1 if no such path exists.Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/04/nearest1-grid.jpg
Input: maze = [["+","+",".","+"],[".",".",".","+"],["+","+","+","."]], entrance = [1,2]
Output: 1
Explanation: There are 3 exits in this maze at [1,0], [0,2], and [2,3].
Initially, you are at the entrance cell [1,2].
- You can reach [1,0] by moving 2 steps left.
- You can reach [0,2] by moving 1 step up.
It is impossible to reach [2,3] from the entrance.
Thus, the nearest exit is [0,2], which is 1 step away.
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/04/nearesr2-grid.jpg
Input: maze = [["+","+","+"],[".",".","."],["+","+","+"]], entrance = [1,0]
Output: 2
Explanation: There is 1 exit in this maze at [1,2].
[1,0] does not count as an exit since it is the entrance cell.
Initially, you are at the entrance cell [1,0].
- You can reach [1,2] by moving 2 steps right.
Thus, the nearest exit is [1,2], which is 2 steps away.
Example 3:
Image: https://assets.leetcode.com/uploads/2021/06/04/nearest3-grid.jpg
Input: maze = [[".","+"]], entrance = [0,0]
Output: -1
Explanation: There are no exits in this maze.
Constraints:
•
maze.length == m•
maze[i].length == n•
1 <= m, n <= 100•
maze[i][j] is either '.' or '+'.•
entrance.length == 2•
0 <= entrance_row < m•
0 <= entrance_col < n•
entrance will always be an empty cell.2022-11-22
279. Perfect Squares
Topic: Math, Dynamic Programming, Breadth-First Search
Difficulty: Medium
Problem:
Given an integer
A perfect square is an integer that is the square of an integer; in other words, it is the product of some integer with itself. For example,
Example 1:
Example 2:
Constraints:
•
279. Perfect Squares
Topic: Math, Dynamic Programming, Breadth-First Search
Difficulty: Medium
Problem:
Given an integer
n, return the least number of perfect square numbers that sum to n.A perfect square is an integer that is the square of an integer; in other words, it is the product of some integer with itself. For example,
1, 4, 9, and 16 are perfect squares while 3 and 11 are not.Example 1:
Input: n = 12
Output: 3
Explanation: 12 = 4 + 4 + 4.
Example 2:
Input: n = 13
Output: 2
Explanation: 13 = 4 + 9.
Constraints:
•
1 <= n <= 10^42022-11-23
36. Valid Sudoku
Topic: Array, Hash Table, Matrix
Difficulty: Medium
Problem:
Determine if a
1. Each row must contain the digits
2. Each column must contain the digits
3. Each of the nine
Note:
• A Sudoku board (partially filled) could be valid but is not necessarily solvable.
• Only the filled cells need to be validated according to the mentioned rules.
Example 1:
Image: https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Sudoku-by-L2G-20050714.svg/250px-Sudoku-by-L2G-20050714.svg.png
Example 2:
Constraints:
•
•
•
36. Valid Sudoku
Topic: Array, Hash Table, Matrix
Difficulty: Medium
Problem:
Determine if a
9 x 9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:1. Each row must contain the digits
1-9 without repetition.2. Each column must contain the digits
1-9 without repetition.3. Each of the nine
3 x 3 sub-boxes of the grid must contain the digits 1-9 without repetition.Note:
• A Sudoku board (partially filled) could be valid but is not necessarily solvable.
• Only the filled cells need to be validated according to the mentioned rules.
Example 1:
Image: https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Sudoku-by-L2G-20050714.svg/250px-Sudoku-by-L2G-20050714.svg.png
Input: board =
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Output: true
Example 2:
Input: board =
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Output: false
Explanation: Same as Example 1, except with the 5 in the top left corner being modified to 8. Since there are two 8's in the top left 3x3 sub-box, it is invalid.
Constraints:
•
board.length == 9•
board[i].length == 9•
board[i][j] is a digit 1-9 or '.'.2022-11-24
79. Word Search
Topic: Array, Backtracking, Matrix
Difficulty: Medium
Problem:
Given an
The word can be constructed from letters of sequentially adjacent cells, where adjacent cells are horizontally or vertically neighboring. The same letter cell may not be used more than once.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/04/word2.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/11/04/word-1.jpg
Example 3:
Image: https://assets.leetcode.com/uploads/2020/10/15/word3.jpg
Constraints:
•
•
•
•
•
Follow up: Could you use search pruning to make your solution faster with a larger
79. Word Search
Topic: Array, Backtracking, Matrix
Difficulty: Medium
Problem:
Given an
m x n grid of characters board and a string word, return true if word exists in the grid.The word can be constructed from letters of sequentially adjacent cells, where adjacent cells are horizontally or vertically neighboring. The same letter cell may not be used more than once.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/04/word2.jpg
Input: board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
Output: true
Example 2:
Image: https://assets.leetcode.com/uploads/2020/11/04/word-1.jpg
Input: board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
Output: true
Example 3:
Image: https://assets.leetcode.com/uploads/2020/10/15/word3.jpg
Input: board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
Output: false
Constraints:
•
m == board.length•
n = board[i].length•
1 <= m, n <= 6•
1 <= word.length <= 15•
board and word consists of only lowercase and uppercase English letters.Follow up: Could you use search pruning to make your solution faster with a larger
board?2022-11-25
907. Sum of Subarray Minimums
Topic: Array, Dynamic Programming, Stack, Monotonic Stack
Difficulty: Medium
Problem:
Given an array of integers arr, find the sum of
Example 1:
Example 2:
Constraints:
•
•
907. Sum of Subarray Minimums
Topic: Array, Dynamic Programming, Stack, Monotonic Stack
Difficulty: Medium
Problem:
Given an array of integers arr, find the sum of
min(b), where b ranges over every (contiguous) subarray of arr. Since the answer may be large, return the answer modulo 10^9 + 7.Example 1:
Input: arr = [3,1,2,4]
Output: 17
Explanation:
Subarrays are [3], [1], [2], [4], [3,1], [1,2], [2,4], [3,1,2], [1,2,4], [3,1,2,4].
Minimums are 3, 1, 2, 4, 1, 1, 2, 1, 1, 1.
Sum is 17.
Example 2:
Input: arr = [11,81,94,43,3]
Output: 444
Constraints:
•
1 <= arr.length <= 3 * 10^4•
1 <= arr[i] <= 3 * 10^42022-11-26
1235. Maximum Profit in Job Scheduling
Topic: Array, Binary Search, Dynamic Programming, Sorting
Difficulty: Hard
Problem:
We have
You're given the
If you choose a job that ends at time
Example 1:
Image: https://assets.leetcode.com/uploads/2019/10/10/sample1_1584.png
Example 2:
Image: https://assets.leetcode.com/uploads/2019/10/10/sample22_1584.png
Example 3:
Image: https://assets.leetcode.com/uploads/2019/10/10/sample3_1584.png
Constraints:
•
•
•
1235. Maximum Profit in Job Scheduling
Topic: Array, Binary Search, Dynamic Programming, Sorting
Difficulty: Hard
Problem:
We have
n jobs, where every job is scheduled to be done from startTime[i] to endTime[i], obtaining a profit of profit[i].You're given the
startTime, endTime and profit arrays, return the maximum profit you can take such that there are no two jobs in the subset with overlapping time range.If you choose a job that ends at time
X you will be able to start another job that starts at time X.Example 1:
Image: https://assets.leetcode.com/uploads/2019/10/10/sample1_1584.png
Input: startTime = [1,2,3,3], endTime = [3,4,5,6], profit = [50,10,40,70]
Output: 120
Explanation: The subset chosen is the first and fourth job.
Time range [1-3]+[3-6] , we get profit of 120 = 50 + 70.
Example 2:
Image: https://assets.leetcode.com/uploads/2019/10/10/sample22_1584.png
Input: startTime = [1,2,3,4,6], endTime = [3,5,10,6,9], profit = [20,20,100,70,60]
Output: 150
Explanation: The subset chosen is the first, fourth and fifth job.
Profit obtained 150 = 20 + 70 + 60.
Example 3:
Image: https://assets.leetcode.com/uploads/2019/10/10/sample3_1584.png
Input: startTime = [1,1,1], endTime = [2,3,4], profit = [5,6,4]
Output: 6
Constraints:
•
1 <= startTime.length == endTime.length == profit.length <= 5 * 10^4•
1 <= startTime[i] < endTime[i] <= 10^9•
1 <= profit[i] <= 10^42022-11-27
446. Arithmetic Slices II - Subsequence
Topic: Array, Dynamic Programming
Difficulty: Hard
Problem:
Given an integer array
A sequence of numbers is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.
• For example,
• For example,
A subsequence of an array is a sequence that can be formed by removing some elements (possibly none) of the array.
• For example,
The test cases are generated so that the answer fits in 32-bit integer.
Example 1:
Example 2:
Constraints:
•
•
446. Arithmetic Slices II - Subsequence
Topic: Array, Dynamic Programming
Difficulty: Hard
Problem:
Given an integer array
nums, return the number of all the arithmetic subsequences of nums.A sequence of numbers is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.
• For example,
[1, 3, 5, 7, 9], [7, 7, 7, 7], and [3, -1, -5, -9] are arithmetic sequences.• For example,
[1, 1, 2, 5, 7] is not an arithmetic sequence.A subsequence of an array is a sequence that can be formed by removing some elements (possibly none) of the array.
• For example,
[2,5,10] is a subsequence of [1,2,1,2,4,1,5,10].The test cases are generated so that the answer fits in 32-bit integer.
Example 1:
Input: nums = [2,4,6,8,10]
Output: 7
Explanation: All arithmetic subsequence slices are:
[2,4,6]
[4,6,8]
[6,8,10]
[2,4,6,8]
[4,6,8,10]
[2,4,6,8,10]
[2,6,10]
Example 2:
Input: nums = [7,7,7,7,7]
Output: 16
Explanation: Any subsequence of this array is arithmetic.
Constraints:
•
1 <= nums.length <= 1000•
-2^31 <= nums[i] <= 2^31 - 12022-11-28
2225. Find Players With Zero or One Losses
Topic: Array, Hash Table, Sorting, Counting
Difficulty: Medium
Problem:
You are given an integer array
Return a list
•
•
The values in the two lists should be returned in increasing order.
Note:
• You should only consider the players that have played at least one match.
• The testcases will be generated such that no two matches will have the same outcome.
Example 1:
Example 2:
Constraints:
•
•
•
•
• All
2225. Find Players With Zero or One Losses
Topic: Array, Hash Table, Sorting, Counting
Difficulty: Medium
Problem:
You are given an integer array
matches where matches[i] = [winner_i, loser_i] indicates that the player winner_i defeated player loser_i in a match.Return a list
answer of size 2 where:•
answer[0] is a list of all players that have not lost any matches.•
answer[1] is a list of all players that have lost exactly one match.The values in the two lists should be returned in increasing order.
Note:
• You should only consider the players that have played at least one match.
• The testcases will be generated such that no two matches will have the same outcome.
Example 1:
Input: matches = [[1,3],[2,3],[3,6],[5,6],[5,7],[4,5],[4,8],[4,9],[10,4],[10,9]]
Output: [[1,2,10],[4,5,7,8]]
Explanation:
Players 1, 2, and 10 have not lost any matches.
Players 4, 5, 7, and 8 each have lost one match.
Players 3, 6, and 9 each have lost two matches.
Thus, answer[0] = [1,2,10] and answer[1] = [4,5,7,8].
Example 2:
Input: matches = [[2,3],[1,3],[5,4],[6,4]]
Output: [[1,2,5,6],[]]
Explanation:
Players 1, 2, 5, and 6 have not lost any matches.
Players 3 and 4 each have lost two matches.
Thus, answer[0] = [1,2,5,6] and answer[1] = [].
Constraints:
•
1 <= matches.length <= 10^5•
matches[i].length == 2•
1 <= winner_i, loser_i <= 10^5•
winner_i != loser_i• All
matches[i] are unique.2022-11-29
380. Insert Delete GetRandom O(1)
Topic: Array, Hash Table, Math, Design, Randomized
Difficulty: Medium
Problem:
Implement the
•
•
•
•
You must implement the functions of the class such that each function works in average
Example 1:
Constraints:
•
• At most
• There will be at least one element in the data structure when
380. Insert Delete GetRandom O(1)
Topic: Array, Hash Table, Math, Design, Randomized
Difficulty: Medium
Problem:
Implement the
RandomizedSet class:•
RandomizedSet() Initializes the RandomizedSet object.•
bool insert(int val) Inserts an item val into the set if not present. Returns true if the item was not present, false otherwise.•
bool remove(int val) Removes an item val from the set if present. Returns true if the item was present, false otherwise.•
int getRandom() Returns a random element from the current set of elements (it's guaranteed that at least one element exists when this method is called). Each element must have the same probability of being returned.You must implement the functions of the class such that each function works in average
O(1) time complexity.Example 1:
Input
["RandomizedSet", "insert", "remove", "insert", "getRandom", "remove", "insert", "getRandom"]
[[], [1], [2], [2], [], [1], [2], []]
Output
[null, true, false, true, 2, true, false, 2]
Explanation
RandomizedSet randomizedSet = new RandomizedSet();
randomizedSet.insert(1); // Inserts 1 to the set. Returns true as 1 was inserted successfully.
randomizedSet.remove(2); // Returns false as 2 does not exist in the set.
randomizedSet.insert(2); // Inserts 2 to the set, returns true. Set now contains [1,2].
randomizedSet.getRandom(); // getRandom() should return either 1 or 2 randomly.
randomizedSet.remove(1); // Removes 1 from the set, returns true. Set now contains [2].
randomizedSet.insert(2); // 2 was already in the set, so return false.
randomizedSet.getRandom(); // Since 2 is the only number in the set, getRandom() will always return 2.
Constraints:
•
-2^31 <= val <= 2^31 - 1• At most
2 *10^5 calls will be made to insert, remove, and getRandom.• There will be at least one element in the data structure when
getRandom is called.2022-11-30
1207. Unique Number of Occurrences
Topic: Array, Hash Table
Difficulty: Easy
Problem:
Given an array of integers
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1207. Unique Number of Occurrences
Topic: Array, Hash Table
Difficulty: Easy
Problem:
Given an array of integers
arr, return true if the number of occurrences of each value in the array is unique, or false otherwise.Example 1:
Input: arr = [1,2,2,1,1,3]
Output: true
Explanation: The value 1 has 3 occurrences, 2 has 2 and 3 has 1. No two values have the same number of occurrences.
Example 2:
Input: arr = [1,2]
Output: false
Example 3:
Input: arr = [-3,0,1,-3,1,1,1,-3,10,0]
Output: true
Constraints:
•
1 <= arr.length <= 1000•
-1000 <= arr[i] <= 10002022-12-01
1704. Determine if String Halves Are Alike
Topic: String, Counting
Difficulty: Easy
Problem:
You are given a string
Two strings are alike if they have the same number of vowels (
Return
Example 1:
Example 2:
Constraints:
•
•
•
1704. Determine if String Halves Are Alike
Topic: String, Counting
Difficulty: Easy
Problem:
You are given a string
s of even length. Split this string into two halves of equal lengths, and let a be the first half and b be the second half.Two strings are alike if they have the same number of vowels (
'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'). Notice that s contains uppercase and lowercase letters.Return
true if a and b are alike. Otherwise, return false.Example 1:
Input: s = "book"
Output: true
Explanation: a = "bo" and b = "ok". a has 1 vowel and b has 1 vowel. Therefore, they are alike.
Example 2:
Input: s = "textbook"
Output: false
Explanation: a = "text" and b = "book". a has 1 vowel whereas b has 2. Therefore, they are not alike.
Notice that the vowel o is counted twice.
Constraints:
•
2 <= s.length <= 1000•
s.length is even.•
s consists of uppercase and lowercase letters.2022-12-02
1657. Determine if Two Strings Are Close
Topic: Hash Table, String, Sorting
Difficulty: Medium
Problem:
Two strings are considered close if you can attain one from the other using the following operations:
• Operation 1: Swap any two existing characters.
• For example,
• Operation 2: Transform every occurrence of one existing character into another existing character, and do the same with the other character.
• For example,
You can use the operations on either string as many times as necessary.
Given two strings,
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1657. Determine if Two Strings Are Close
Topic: Hash Table, String, Sorting
Difficulty: Medium
Problem:
Two strings are considered close if you can attain one from the other using the following operations:
• Operation 1: Swap any two existing characters.
• For example,
abcde -> aecdb• Operation 2: Transform every occurrence of one existing character into another existing character, and do the same with the other character.
• For example,
aacabb -> bbcbaa (all a's turn into b's, and all b's turn into a's)You can use the operations on either string as many times as necessary.
Given two strings,
word1 and word2, return true if word1 and word2 are close, and false otherwise.Example 1:
Input: word1 = "abc", word2 = "bca"
Output: true
Explanation: You can attain word2 from word1 in 2 operations.
Apply Operation 1: "abc" -> "acb"
Apply Operation 1: "acb" -> "bca"
Example 2:
Input: word1 = "a", word2 = "aa"
Output: false
Explanation: It is impossible to attain word2 from word1, or vice versa, in any number of operations.
Example 3:
Input: word1 = "cabbba", word2 = "abbccc"
Output: true
Explanation: You can attain word2 from word1 in 3 operations.
Apply Operation 1: "cabbba" -> "caabbb"
Apply Operation 2: "caabbb" -> "baaccc"
Apply Operation 2: "baaccc" -> "abbccc"
Constraints:
•
1 <= word1.length, word2.length <= 10^5•
word1 and word2 contain only lowercase English letters.2022-12-03
451. Sort Characters By Frequency
Topic: Hash Table, String, Sorting, Heap (Priority Queue), Bucket Sort, Counting
Difficulty: Medium
Problem:
Given a string
Return the sorted string. If there are multiple answers, return any of them.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
451. Sort Characters By Frequency
Topic: Hash Table, String, Sorting, Heap (Priority Queue), Bucket Sort, Counting
Difficulty: Medium
Problem:
Given a string
s, sort it in decreasing order based on the frequency of the characters. The frequency of a character is the number of times it appears in the string.Return the sorted string. If there are multiple answers, return any of them.
Example 1:
Input: s = "tree"
Output: "eert"
Explanation: 'e' appears twice while 'r' and 't' both appear once.
So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
Example 2:
Input: s = "cccaaa"
Output: "aaaccc"
Explanation: Both 'c' and 'a' appear three times, so both "cccaaa" and "aaaccc" are valid answers.
Note that "cacaca" is incorrect, as the same characters must be together.
Example 3:
Input: s = "Aabb"
Output: "bbAa"
Explanation: "bbaA" is also a valid answer, but "Aabb" is incorrect.
Note that 'A' and 'a' are treated as two different characters.
Constraints:
•
1 <= s.length <= 5 * 10^5•
s consists of uppercase and lowercase English letters and digits.2022-12-04
2256. Minimum Average Difference
Topic: Array, Prefix Sum
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
The average difference of the index
Return the index with the minimum average difference. If there are multiple such indices, return the smallest one.
Note:
• The absolute difference of two numbers is the absolute value of their difference.
• The average of
• The average of
Example 1:
Example 2:
Constraints:
•
•
2256. Minimum Average Difference
Topic: Array, Prefix Sum
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
nums of length n.The average difference of the index
i is the absolute difference between the average of the first i + 1 elements of nums and the average of the last n - i - 1 elements. Both averages should be rounded down to the nearest integer.Return the index with the minimum average difference. If there are multiple such indices, return the smallest one.
Note:
• The absolute difference of two numbers is the absolute value of their difference.
• The average of
n elements is the sum of the n elements divided (integer division) by n.• The average of
0 elements is considered to be 0.Example 1:
Input: nums = [2,5,3,9,5,3]
Output: 3
Explanation:
- The average difference of index 0 is: |2 / 1 - (5 + 3 + 9 + 5 + 3) / 5| = |2 / 1 - 25 / 5| = |2 - 5| = 3.
- The average difference of index 1 is: |(2 + 5) / 2 - (3 + 9 + 5 + 3) / 4| = |7 / 2 - 20 / 4| = |3 - 5| = 2.
- The average difference of index 2 is: |(2 + 5 + 3) / 3 - (9 + 5 + 3) / 3| = |10 / 3 - 17 / 3| = |3 - 5| = 2.
- The average difference of index 3 is: |(2 + 5 + 3 + 9) / 4 - (5 + 3) / 2| = |19 / 4 - 8 / 2| = |4 - 4| = 0.
- The average difference of index 4 is: |(2 + 5 + 3 + 9 + 5) / 5 - 3 / 1| = |24 / 5 - 3 / 1| = |4 - 3| = 1.
- The average difference of index 5 is: |(2 + 5 + 3 + 9 + 5 + 3) / 6 - 0| = |27 / 6 - 0| = |4 - 0| = 4.
The average difference of index 3 is the minimum average difference so return 3.
Example 2:
Input: nums = [0]
Output: 0
Explanation:
The only index is 0 so return 0.
The average difference of index 0 is: |0 / 1 - 0| = |0 - 0| = 0.
Constraints:
•
1 <= nums.length <= 10^5•
0 <= nums[i] <= 10^52022-12-05
876. Middle of the Linked List
Topic: Linked List, Two Pointers
Difficulty: Easy
Problem:
Given the
If there are two middle nodes, return the second middle node.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-midlist1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-midlist2.jpg
Constraints:
• The number of nodes in the list is in the range
•
876. Middle of the Linked List
Topic: Linked List, Two Pointers
Difficulty: Easy
Problem:
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.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-midlist1.jpg
Input: head = [1,2,3,4,5]
Output: [3,4,5]
Explanation: The middle node of the list is node 3.
Example 2:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-midlist2.jpg
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.
Constraints:
• The number of nodes in the list is in the range
[1, 100].•
1 <= Node.val <= 1002022-12-06
328. Odd Even Linked List
Topic: Linked List
Difficulty: Medium
Problem:
Given the
The first node is considered odd, and the second node is even, and so on.
Note that the relative order inside both the even and odd groups should remain as it was in the input.
You must solve the problem in
Example 1:
Image: https://assets.leetcode.com/uploads/2021/03/10/oddeven-linked-list.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/03/10/oddeven2-linked-list.jpg
Constraints:
• The number of nodes in the linked list is in the range
•
328. Odd Even Linked List
Topic: Linked List
Difficulty: Medium
Problem:
Given the
head of a singly linked list, group all the nodes with odd indices together followed by the nodes with even indices, and return the reordered list.The first node is considered odd, and the second node is even, and so on.
Note that the relative order inside both the even and odd groups should remain as it was in the input.
You must solve the problem in
O(1) extra space complexity and O(n) time complexity.Example 1:
Image: https://assets.leetcode.com/uploads/2021/03/10/oddeven-linked-list.jpg
Input: head = [1,2,3,4,5]
Output: [1,3,5,2,4]
Example 2:
Image: https://assets.leetcode.com/uploads/2021/03/10/oddeven2-linked-list.jpg
Input: head = [2,1,3,5,6,4,7]
Output: [2,3,6,7,1,5,4]
Constraints:
• The number of nodes in the linked list is in the range
[0, 10^4].•
-10^6 <= Node.val <= 10^62022-12-07
938. Range Sum of BST
Topic: Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Easy
Problem:
Given the
Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/05/bst1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/11/05/bst2.jpg
Constraints:
• The number of nodes in the tree is in the range
•
•
• All
938. Range Sum of BST
Topic: Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Easy
Problem:
Given the
root node of a binary search tree and two integers low and high, return the sum of values of all nodes with a value in the inclusive range [low, high].Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/05/bst1.jpg
Input: root = [10,5,15,3,7,null,18], low = 7, high = 15
Output: 32
Explanation: Nodes 7, 10, and 15 are in the range [7, 15]. 7 + 10 + 15 = 32.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/11/05/bst2.jpg
Input: root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10
Output: 23
Explanation: Nodes 6, 7, and 10 are in the range [6, 10]. 6 + 7 + 10 = 23.
Constraints:
• The number of nodes in the tree is in the range
[1, 2 * 10^4].•
1 <= Node.val <= 10^5•
1 <= low <= high <= 10^5• All
Node.val are unique.