2024-09-17
884. Uncommon Words from Two Sentences
Topic: Hash Table, String, Counting
Difficulty: Easy
Problem:
A sentence is a string of single-space separated words where each word consists only of lowercase letters.
A word is uncommon if it appears exactly once in one of the sentences, and does not appear in the other sentence.
Given two sentences
Example 1:
Input: s1 = "this apple is sweet", s2 = "this apple is sour"
Output: "sweet","sour"
Explanation:
The word
Example 2:
Input: s1 = "apple apple", s2 = "banana"
Output: "banana"
Constraints:
•
•
•
• All the words in
884. Uncommon Words from Two Sentences
Topic: Hash Table, String, Counting
Difficulty: Easy
Problem:
A sentence is a string of single-space separated words where each word consists only of lowercase letters.
A word is uncommon if it appears exactly once in one of the sentences, and does not appear in the other sentence.
Given two sentences
s1 and s2, return a list of all the uncommon words. You may return the answer in any order.Example 1:
Input: s1 = "this apple is sweet", s2 = "this apple is sour"
Output: "sweet","sour"
Explanation:
The word
"sweet" appears only in s1, while the word "sour" appears only in s2.Example 2:
Input: s1 = "apple apple", s2 = "banana"
Output: "banana"
Constraints:
•
1 <= s1.length, s2.length <= 200•
s1 and s2 consist of lowercase English letters and spaces.•
s1 and s2 do not have leading or trailing spaces.• All the words in
s1 and s2 are separated by a single space.2024-09-18
179. Largest Number
Topic: Array, String, Greedy, Sorting
Difficulty: Medium
Problem:
Given a list of non-negative integers
Since the result may be very large, so you need to return a string instead of an integer.
Example 1:
Example 2:
Constraints:
•
•
179. Largest Number
Topic: Array, String, Greedy, Sorting
Difficulty: Medium
Problem:
Given a list of non-negative integers
nums, arrange them such that they form the largest number and return it.Since the result may be very large, so you need to return a string instead of an integer.
Example 1:
Input: nums = [10,2]
Output: "210"
Example 2:
Input: nums = [3,30,34,5,9]
Output: "9534330"
Constraints:
•
1 <= nums.length <= 100•
0 <= nums[i] <= 10^92024-09-19
241. Different Ways to Add Parentheses
Topic: Math, String, Dynamic Programming, Recursion, Memoization
Difficulty: Medium
Problem:
Given a string
The test cases are generated such that the output values fit in a 32-bit integer and the number of different results does not exceed
Example 1:
Example 2:
Constraints:
•
•
• All the integer values in the input expression are in the range
241. Different Ways to Add Parentheses
Topic: Math, String, Dynamic Programming, Recursion, Memoization
Difficulty: Medium
Problem:
Given a string
expression of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. You may return the answer in any order.The test cases are generated such that the output values fit in a 32-bit integer and the number of different results does not exceed
10^4.Example 1:
Input: expression = "2-1-1"
Output: [0,2]
Explanation:
((2-1)-1) = 0
(2-(1-1)) = 2
Example 2:
Input: expression = "2*3-4*5"
Output: [-34,-14,-10,-10,10]
Explanation:
(2*(3-(4*5))) = -34
((2*3)-(4*5)) = -14
((2*(3-4))*5) = -10
(2*((3-4)*5)) = -10
(((2*3)-4)*5) = 10
Constraints:
•
1 <= expression.length <= 20•
expression consists of digits and the operator '+', '-', and '*'.• All the integer values in the input expression are in the range
[0, 99].2024-09-20
214. Shortest Palindrome
Topic: String, Rolling Hash, String Matching, Hash Function
Difficulty: Hard
Problem:
You are given a string
Return the shortest palindrome you can find by performing this transformation.
Example 1:
Example 2:
Constraints:
•
•
214. Shortest Palindrome
Topic: String, Rolling Hash, String Matching, Hash Function
Difficulty: Hard
Problem:
You are given a string
s. You can convert s to a palindrome by adding characters in front of it.Return the shortest palindrome you can find by performing this transformation.
Example 1:
Input: s = "aacecaaa"
Output: "aaacecaaa"
Example 2:
Input: s = "abcd"
Output: "dcbabcd"
Constraints:
•
0 <= s.length <= 5 * 10^4•
s consists of lowercase English letters only.2024-09-21
386. Lexicographical Numbers
Topic: Depth-First Search, Trie
Difficulty: Medium
Problem:
Given an integer
You must write an algorithm that runs in
Example 1:
Example 2:
Constraints:
•
386. Lexicographical Numbers
Topic: Depth-First Search, Trie
Difficulty: Medium
Problem:
Given an integer
n, return all the numbers in the range [1, n] sorted in lexicographical order.You must write an algorithm that runs in
O(n) time and uses O(1) extra space. Example 1:
Input: n = 13
Output: [1,10,11,12,13,2,3,4,5,6,7,8,9]
Example 2:
Input: n = 2
Output: [1,2]
Constraints:
•
1 <= n <= 5 * 10^42024-09-22
440. K-th Smallest in Lexicographical Order
Topic: Trie
Difficulty: Hard
Problem:
Given two integers
Example 1:
Example 2:
Constraints:
•
440. K-th Smallest in Lexicographical Order
Topic: Trie
Difficulty: Hard
Problem:
Given two integers
n and k, return the k^th lexicographically smallest integer in the range [1, n].Example 1:
Input: n = 13, k = 2
Output: 10
Explanation: The lexicographical order is [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9], so the second smallest number is 10.
Example 2:
Input: n = 1, k = 1
Output: 1
Constraints:
•
1 <= k <= n <= 10^92024-09-23
2707. Extra Characters in a String
Topic: Array, Hash Table, String, Dynamic Programming, Trie
Difficulty: Medium
Problem:
You are given a 0-indexed string
Return the minimum number of extra characters left over if you break up
Example 1:
Example 2:
Constraints:
•
•
•
•
•
2707. Extra Characters in a String
Topic: Array, Hash Table, String, Dynamic Programming, Trie
Difficulty: Medium
Problem:
You are given a 0-indexed string
s and a dictionary of words dictionary. You have to break s into one or more non-overlapping substrings such that each substring is present in dictionary. There may be some extra characters in s which are not present in any of the substrings.Return the minimum number of extra characters left over if you break up
s optimally.Example 1:
Input: s = "leetscode", dictionary = ["leet","code","leetcode"]
Output: 1
Explanation: We can break s in two substrings: "leet" from index 0 to 3 and "code" from index 5 to 8. There is only 1 unused character (at index 4), so we return 1.
Example 2:
Input: s = "sayhelloworld", dictionary = ["hello","world"]
Output: 3
Explanation: We can break s in two substrings: "hello" from index 3 to 7 and "world" from index 8 to 12. The characters at indices 0, 1, 2 are not used in any substring and thus are considered as extra characters. Hence, we return 3.
Constraints:
•
1 <= s.length <= 50•
1 <= dictionary.length <= 50•
1 <= dictionary[i].length <= 50•
dictionary[i] and s consists of only lowercase English letters•
dictionary contains distinct words2024-09-24
3043. Find the Length of the Longest Common Prefix
Topic: Array, Hash Table, String, Trie
Difficulty: Medium
Problem:
You are given two arrays with positive integers
A prefix of a positive integer is an integer formed by one or more of its digits, starting from its leftmost digit. For example,
A common prefix of two integers
You need to find the length of the longest common prefix between all pairs of integers
Return the length of the longest common prefix among all pairs. If no common prefix exists among them, return
Example 1:
Example 2:
Constraints:
•
•
3043. Find the Length of the Longest Common Prefix
Topic: Array, Hash Table, String, Trie
Difficulty: Medium
Problem:
You are given two arrays with positive integers
arr1 and arr2.A prefix of a positive integer is an integer formed by one or more of its digits, starting from its leftmost digit. For example,
123 is a prefix of the integer 12345, while 234 is not.A common prefix of two integers
a and b is an integer c, such that c is a prefix of both a and b. For example, 5655359 and 56554 have a common prefix 565 while 1223 and 43456 do not have a common prefix.You need to find the length of the longest common prefix between all pairs of integers
(x, y) such that x belongs to arr1 and y belongs to arr2.Return the length of the longest common prefix among all pairs. If no common prefix exists among them, return
0.Example 1:
Input: arr1 = [1,10,100], arr2 = [1000]
Output: 3
Explanation: There are 3 pairs (arr1[i], arr2[j]):
- The longest common prefix of (1, 1000) is 1.
- The longest common prefix of (10, 1000) is 10.
- The longest common prefix of (100, 1000) is 100.
The longest common prefix is 100 with a length of 3.
Example 2:
Input: arr1 = [1,2,3], arr2 = [4,4,4]
Output: 0
Explanation: There exists no common prefix for any pair (arr1[i], arr2[j]), hence we return 0.
Note that common prefixes between elements of the same array do not count.
Constraints:
•
1 <= arr1.length, arr2.length <= 5 * 10^4•
1 <= arr1[i], arr2[i] <= 10^82024-09-25
2416. Sum of Prefix Scores of Strings
Topic: Array, String, Trie, Counting
Difficulty: Hard
Problem:
You are given an array
We define the score of a string
• For example, if
Return an array
Note that a string is considered as a prefix of itself.
Example 1:
Example 2:
Constraints:
•
•
•
2416. Sum of Prefix Scores of Strings
Topic: Array, String, Trie, Counting
Difficulty: Hard
Problem:
You are given an array
words of size n consisting of non-empty strings.We define the score of a string
word as the number of strings words[i] such that word is a prefix of words[i].• For example, if
words = ["a", "ab", "abc", "cab"], then the score of "ab" is 2, since "ab" is a prefix of both "ab" and "abc".Return an array
answer of size n where answer[i] is the sum of scores of every non-empty prefix of words[i].Note that a string is considered as a prefix of itself.
Example 1:
Input: words = ["abc","ab","bc","b"]
Output: [5,4,3,2]
Explanation: The answer for each string is the following:
- "abc" has 3 prefixes: "a", "ab", and "abc".
- There are 2 strings with the prefix "a", 2 strings with the prefix "ab", and 1 string with the prefix "abc".
The total is answer[0] = 2 + 2 + 1 = 5.
- "ab" has 2 prefixes: "a" and "ab".
- There are 2 strings with the prefix "a", and 2 strings with the prefix "ab".
The total is answer[1] = 2 + 2 = 4.
- "bc" has 2 prefixes: "b" and "bc".
- There are 2 strings with the prefix "b", and 1 string with the prefix "bc".
The total is answer[2] = 2 + 1 = 3.
- "b" has 1 prefix: "b".
- There are 2 strings with the prefix "b".
The total is answer[3] = 2.
Example 2:
Input: words = ["abcd"]
Output: [4]
Explanation:
"abcd" has 4 prefixes: "a", "ab", "abc", and "abcd".
Each prefix has a score of one, so the total is answer[0] = 1 + 1 + 1 + 1 = 4.
Constraints:
•
1 <= words.length <= 1000•
1 <= words[i].length <= 1000•
words[i] consists of lowercase English letters.2024-09-26
729. My Calendar I
Topic: Array, Binary Search, Design, Segment Tree, Ordered Set
Difficulty: Medium
Problem:
You are implementing a program to use as your calendar. We can add a new event if adding the event will not cause a double booking.
A double booking happens when two events have some non-empty intersection (i.e., some moment is common to both events.).
The event can be represented as a pair of integers
Implement the
•
•
Example 1:
Constraints:
•
• At most
729. My Calendar I
Topic: Array, Binary Search, Design, Segment Tree, Ordered Set
Difficulty: Medium
Problem:
You are implementing a program to use as your calendar. We can add a new event if adding the event will not cause a double booking.
A double booking happens when two events have some non-empty intersection (i.e., some moment is common to both events.).
The event can be represented as a pair of integers
start and end that represents a booking on the half-open interval [start, end), the range of real numbers x such that start <= x < end.Implement the
MyCalendar class:•
MyCalendar() Initializes the calendar object.•
boolean book(int start, int end) Returns true if the event can be added to the calendar successfully without causing a double booking. Otherwise, return false and do not add the event to the calendar.Example 1:
Input
["MyCalendar", "book", "book", "book"]
[[], [10, 20], [15, 25], [20, 30]]
Output
[null, true, false, true]
Explanation
MyCalendar myCalendar = new MyCalendar();
myCalendar.book(10, 20); // return True
myCalendar.book(15, 25); // return False, It can not be booked because time 15 is already booked by another event.
myCalendar.book(20, 30); // return True, The event can be booked, as the first event takes every time less than 20, but not including 20.
Constraints:
•
0 <= start < end <= 10^9• At most
1000 calls will be made to book.2024-09-27
731. My Calendar II
Topic: Array, Binary Search, Design, Segment Tree, Prefix Sum, Ordered Set
Difficulty: Medium
Problem:
You are implementing a program to use as your calendar. We can add a new event if adding the event will not cause a triple booking.
A triple booking happens when three events have some non-empty intersection (i.e., some moment is common to all the three events.).
The event can be represented as a pair of integers
Implement the
•
•
Example 1:
Constraints:
•
• At most
731. My Calendar II
Topic: Array, Binary Search, Design, Segment Tree, Prefix Sum, Ordered Set
Difficulty: Medium
Problem:
You are implementing a program to use as your calendar. We can add a new event if adding the event will not cause a triple booking.
A triple booking happens when three events have some non-empty intersection (i.e., some moment is common to all the three events.).
The event can be represented as a pair of integers
start and end that represents a booking on the half-open interval [start, end), the range of real numbers x such that start <= x < end.Implement the
MyCalendarTwo class:•
MyCalendarTwo() Initializes the calendar object.•
boolean book(int start, int end) Returns true if the event can be added to the calendar successfully without causing a triple booking. Otherwise, return false and do not add the event to the calendar.Example 1:
Input
["MyCalendarTwo", "book", "book", "book", "book", "book", "book"]
[[], [10, 20], [50, 60], [10, 40], [5, 15], [5, 10], [25, 55]]
Output
[null, true, true, true, false, true, true]
Explanation
MyCalendarTwo myCalendarTwo = new MyCalendarTwo();
myCalendarTwo.book(10, 20); // return True, The event can be booked.
myCalendarTwo.book(50, 60); // return True, The event can be booked.
myCalendarTwo.book(10, 40); // return True, The event can be double booked.
myCalendarTwo.book(5, 15); // return False, The event cannot be booked, because it would result in a triple booking.
myCalendarTwo.book(5, 10); // return True, The event can be booked, as it does not use time 10 which is already double booked.
myCalendarTwo.book(25, 55); // return True, The event can be booked, as the time in [25, 40) will be double booked with the third event, the time [40, 50) will be single booked, and the time [50, 55) will be double booked with the second event.
Constraints:
•
0 <= start < end <= 10^9• At most
1000 calls will be made to book.2024-09-28
641. Design Circular Deque
Topic: Array, Linked List, Design, Queue
Difficulty: Medium
Problem:
Design your implementation of the circular double-ended queue (deque).
Implement the
•
•
•
•
•
•
•
•
•
Example 1:
Constraints:
•
•
• At most
641. Design Circular Deque
Topic: Array, Linked List, Design, Queue
Difficulty: Medium
Problem:
Design your implementation of the circular double-ended queue (deque).
Implement the
MyCircularDeque class:•
MyCircularDeque(int k) Initializes the deque with a maximum size of k.•
boolean insertFront() Adds an item at the front of Deque. Returns true if the operation is successful, or false otherwise.•
boolean insertLast() Adds an item at the rear of Deque. Returns true if the operation is successful, or false otherwise.•
boolean deleteFront() Deletes an item from the front of Deque. Returns true if the operation is successful, or false otherwise.•
boolean deleteLast() Deletes an item from the rear of Deque. Returns true if the operation is successful, or false otherwise.•
int getFront() Returns the front item from the Deque. Returns -1 if the deque is empty.•
int getRear() Returns the last item from Deque. Returns -1 if the deque is empty.•
boolean isEmpty() Returns true if the deque is empty, or false otherwise.•
boolean isFull() Returns true if the deque is full, or false otherwise.Example 1:
Input
["MyCircularDeque", "insertLast", "insertLast", "insertFront", "insertFront", "getRear", "isFull", "deleteLast", "insertFront", "getFront"]
[[3], [1], [2], [3], [4], [], [], [], [4], []]
Output
[null, true, true, true, false, 2, true, true, true, 4]
Explanation
MyCircularDeque myCircularDeque = new MyCircularDeque(3);
myCircularDeque.insertLast(1); // return True
myCircularDeque.insertLast(2); // return True
myCircularDeque.insertFront(3); // return True
myCircularDeque.insertFront(4); // return False, the queue is full.
myCircularDeque.getRear(); // return 2
myCircularDeque.isFull(); // return True
myCircularDeque.deleteLast(); // return True
myCircularDeque.insertFront(4); // return True
myCircularDeque.getFront(); // return 4
Constraints:
•
1 <= k <= 1000•
0 <= value <= 1000• At most
2000 calls will be made to insertFront, insertLast, deleteFront, deleteLast, getFront, getRear, isEmpty, isFull.2024-09-29
432. All O`one Data Structure
Topic: Hash Table, Linked List, Design, Doubly-Linked List
Difficulty: Hard
Problem:
Design a data structure to store the strings' count with the ability to return the strings with minimum and maximum counts.
Implement the
•
•
•
•
•
Note that each function must run in
Example 1:
Constraints:
•
•
• It is guaranteed that for each call to
• At most
432. All O`one Data Structure
Topic: Hash Table, Linked List, Design, Doubly-Linked List
Difficulty: Hard
Problem:
Design a data structure to store the strings' count with the ability to return the strings with minimum and maximum counts.
Implement the
AllOne class:•
AllOne() Initializes the object of the data structure.•
inc(String key) Increments the count of the string key by 1. If key does not exist in the data structure, insert it with count 1.•
dec(String key) Decrements the count of the string key by 1. If the count of key is 0 after the decrement, remove it from the data structure. It is guaranteed that key exists in the data structure before the decrement.•
getMaxKey() Returns one of the keys with the maximal count. If no element exists, return an empty string "".•
getMinKey() Returns one of the keys with the minimum count. If no element exists, return an empty string "".Note that each function must run in
O(1) average time complexity.Example 1:
Input
["AllOne", "inc", "inc", "getMaxKey", "getMinKey", "inc", "getMaxKey", "getMinKey"]
[[], ["hello"], ["hello"], [], [], ["leet"], [], []]
Output
[null, null, null, "hello", "hello", null, "hello", "leet"]
Explanation
AllOne allOne = new AllOne();
allOne.inc("hello");
allOne.inc("hello");
allOne.getMaxKey(); // return "hello"
allOne.getMinKey(); // return "hello"
allOne.inc("leet");
allOne.getMaxKey(); // return "hello"
allOne.getMinKey(); // return "leet"
Constraints:
•
1 <= key.length <= 10•
key consists of lowercase English letters.• It is guaranteed that for each call to
dec, key is existing in the data structure.• At most
5 * 10^4 calls will be made to inc, dec, getMaxKey, and getMinKey.2024-09-30
1381. Design a Stack With Increment Operation
Topic: Array, Stack, Design
Difficulty: Medium
Problem:
Design a stack that supports increment operations on its elements.
Implement the
•
•
•
•
Example 1:
Constraints:
•
•
• At most
1381. Design a Stack With Increment Operation
Topic: Array, Stack, Design
Difficulty: Medium
Problem:
Design a stack that supports increment operations on its elements.
Implement the
CustomStack class:•
CustomStack(int maxSize) Initializes the object with maxSize which is the maximum number of elements in the stack.•
void push(int x) Adds x to the top of the stack if the stack has not reached the maxSize.•
int pop() Pops and returns the top of the stack or -1 if the stack is empty.•
void inc(int k, int val) Increments the bottom k elements of the stack by val. If there are less than k elements in the stack, increment all the elements in the stack.Example 1:
Input
["CustomStack","push","push","pop","push","push","push","increment","increment","pop","pop","pop","pop"]
[[3],[1],[2],[],[2],[3],[4],[5,100],[2,100],[],[],[],[]]
Output
[null,null,null,2,null,null,null,null,null,103,202,201,-1]
Explanation
CustomStack stk = new CustomStack(3); // Stack is Empty []
stk.push(1); // stack becomes [1]
stk.push(2); // stack becomes [1, 2]
stk.pop(); // return 2 --> Return top of the stack 2, stack becomes [1]
stk.push(2); // stack becomes [1, 2]
stk.push(3); // stack becomes [1, 2, 3]
stk.push(4); // stack still [1, 2, 3], Do not add another elements as size is 4
stk.increment(5, 100); // stack becomes [101, 102, 103]
stk.increment(2, 100); // stack becomes [201, 202, 103]
stk.pop(); // return 103 --> Return top of the stack 103, stack becomes [201, 202]
stk.pop(); // return 202 --> Return top of the stack 202, stack becomes [201]
stk.pop(); // return 201 --> Return top of the stack 201, stack becomes []
stk.pop(); // return -1 --> Stack is empty return -1.
Constraints:
•
1 <= maxSize, x, k <= 1000•
0 <= val <= 100• At most
1000 calls will be made to each method of increment, push and pop each separately.2024-10-01
1497. Check If Array Pairs Are Divisible by k
Topic: Array, Hash Table, Counting
Difficulty: Medium
Problem:
Given an array of integers
We want to divide the array into exactly
Return
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
•
1497. Check If Array Pairs Are Divisible by k
Topic: Array, Hash Table, Counting
Difficulty: Medium
Problem:
Given an array of integers
arr of even length n and an integer k.We want to divide the array into exactly
n / 2 pairs such that the sum of each pair is divisible by k.Return
true If you can find a way to do that or false otherwise.Example 1:
Input: arr = [1,2,3,4,5,10,6,7,8,9], k = 5
Output: true
Explanation: Pairs are (1,9),(2,8),(3,7),(4,6) and (5,10).
Example 2:
Input: arr = [1,2,3,4,5,6], k = 7
Output: true
Explanation: Pairs are (1,6),(2,5) and(3,4).
Example 3:
Input: arr = [1,2,3,4,5,6], k = 10
Output: false
Explanation: You can try all possible pairs to see that there is no way to divide arr into 3 pairs each with sum divisible by 10.
Constraints:
•
arr.length == n•
1 <= n <= 10^5•
n is even.•
-10^9 <= arr[i] <= 10^9•
1 <= k <= 10^52024-10-02
1331. Rank Transform of an Array
Topic: Array, Hash Table, Sorting
Difficulty: Easy
Problem:
Given an array of integers
The rank represents how large the element is. The rank has the following rules:
• Rank is an integer starting from 1.
• The larger the element, the larger the rank. If two elements are equal, their rank must be the same.
• Rank should be as small as possible.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1331. Rank Transform of an Array
Topic: Array, Hash Table, Sorting
Difficulty: Easy
Problem:
Given an array of integers
arr, replace each element with its rank.The rank represents how large the element is. The rank has the following rules:
• Rank is an integer starting from 1.
• The larger the element, the larger the rank. If two elements are equal, their rank must be the same.
• Rank should be as small as possible.
Example 1:
Input: arr = [40,10,20,30]
Output: [4,1,2,3]
Explanation: 40 is the largest element. 10 is the smallest. 20 is the second smallest. 30 is the third smallest.
Example 2:
Input: arr = [100,100,100]
Output: [1,1,1]
Explanation: Same elements share the same rank.
Example 3:
Input: arr = [37,12,28,9,100,56,80,5,12]
Output: [5,3,4,2,8,6,7,1,3]
Constraints:
•
0 <= arr.length <= 10^5•
-10^9 <= arr[i] <= 10^92024-10-03
1590. Make Sum Divisible by P
Topic: Array, Hash Table, Prefix Sum
Difficulty: Medium
Problem:
Given an array of positive integers
Return the length of the smallest subarray that you need to remove, or
A subarray is defined as a contiguous block of elements in the array.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1590. Make Sum Divisible by P
Topic: Array, Hash Table, Prefix Sum
Difficulty: Medium
Problem:
Given an array of positive integers
nums, remove the smallest subarray (possibly empty) such that the sum of the remaining elements is divisible by p. It is not allowed to remove the whole array.Return the length of the smallest subarray that you need to remove, or
-1 if it's impossible.A subarray is defined as a contiguous block of elements in the array.
Example 1:
Input: nums = [3,1,4,2], p = 6
Output: 1
Explanation: The sum of the elements in nums is 10, which is not divisible by 6. We can remove the subarray [4], and the sum of the remaining elements is 6, which is divisible by 6.
Example 2:
Input: nums = [6,3,5,2], p = 9
Output: 2
Explanation: We cannot remove a single element to get a sum divisible by 9. The best way is to remove the subarray [5,2], leaving us with [6,3] with sum 9.
Example 3:
Input: nums = [1,2,3], p = 3
Output: 0
Explanation: Here the sum is 6. which is already divisible by 3. Thus we do not need to remove anything.
Constraints:
•
1 <= nums.length <= 10^5•
1 <= nums[i] <= 10^9•
1 <= p <= 10^92024-10-04
2491. Divide Players Into Teams of Equal Skill
Topic: Array, Hash Table, Two Pointers, Sorting
Difficulty: Medium
Problem:
You are given a positive integer array
The chemistry of a team is equal to the product of the skills of the players on that team.
Return the sum of the chemistry of all the teams, or return
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
2491. Divide Players Into Teams of Equal Skill
Topic: Array, Hash Table, Two Pointers, Sorting
Difficulty: Medium
Problem:
You are given a positive integer array
skill of even length n where skill[i] denotes the skill of the i^th player. Divide the players into n / 2 teams of size 2 such that the total skill of each team is equal.The chemistry of a team is equal to the product of the skills of the players on that team.
Return the sum of the chemistry of all the teams, or return
-1 if there is no way to divide the players into teams such that the total skill of each team is equal.Example 1:
Input: skill = [3,2,5,1,3,4]
Output: 22
Explanation:
Divide the players into the following teams: (1, 5), (2, 4), (3, 3), where each team has a total skill of 6.
The sum of the chemistry of all the teams is: 1 * 5 + 2 * 4 + 3 * 3 = 5 + 8 + 9 = 22.
Example 2:
Input: skill = [3,4]
Output: 12
Explanation:
The two players form a team with a total skill of 7.
The chemistry of the team is 3 * 4 = 12.
Example 3:
Input: skill = [1,1,2,3]
Output: -1
Explanation:
There is no way to divide the players into teams such that the total skill of each team is equal.
Constraints:
•
2 <= skill.length <= 10^5•
skill.length is even.•
1 <= skill[i] <= 10002024-10-05
567. Permutation in String
Topic: Hash Table, Two Pointers, String, Sliding Window
Difficulty: Medium
Problem:
Given two strings
In other words, return
Example 1:
Example 2:
Constraints:
•
•
567. Permutation in String
Topic: Hash Table, Two Pointers, String, Sliding Window
Difficulty: Medium
Problem:
Given two strings
s1 and s2, return true if s2 contains a permutation of s1, or false otherwise.In other words, return
true if one of s1's permutations is the substring of s2.Example 1:
Input: s1 = "ab", s2 = "eidbaooo"
Output: true
Explanation: s2 contains one permutation of s1 ("ba").
Example 2:
Input: s1 = "ab", s2 = "eidboaoo"
Output: false
Constraints:
•
1 <= s1.length, s2.length <= 10^4•
s1 and s2 consist of lowercase English letters.2024-10-06
1813. Sentence Similarity III
Topic: Array, Two Pointers, String
Difficulty: Medium
Problem:
You are given two strings
Two sentences
For example,
•
•
Given two sentences
Example 1:
Input: sentence1 = "My name is Haley", sentence2 = "My Haley"
Output: true
Explanation:
Example 2:
Input: sentence1 = "of", sentence2 = "A lot of words"
Output: false
Explanation:
No single sentence can be inserted inside one of the sentences to make it equal to the other.
Example 3:
Input: sentence1 = "Eating right now", sentence2 = "Eating"
Output: true
Explanation:
Constraints:
•
•
• The words in
1813. Sentence Similarity III
Topic: Array, Two Pointers, String
Difficulty: Medium
Problem:
You are given two strings
sentence1 and sentence2, each representing a sentence composed of words. A sentence is a list of words that are separated by a single space with no leading or trailing spaces. Each word consists of only uppercase and lowercase English characters.Two sentences
s1 and s2 are considered similar if it is possible to insert an arbitrary sentence (possibly empty) inside one of these sentences such that the two sentences become equal. Note that the inserted sentence must be separated from existing words by spaces.For example,
•
s1 = "Hello Jane" and s2 = "Hello my name is Jane" can be made equal by inserting "my name is" between "Hello" and "Jane" in s1.•
s1 = "Frog cool" and s2 = "Frogs are cool" are not similar, since although there is a sentence "s are" inserted into s1, it is not separated from "Frog" by a space.Given two sentences
sentence1 and sentence2, return true if sentence1 and sentence2 are similar. Otherwise, return false.Example 1:
Input: sentence1 = "My name is Haley", sentence2 = "My Haley"
Output: true
Explanation:
sentence2 can be turned to sentence1 by inserting "name is" between "My" and "Haley".Example 2:
Input: sentence1 = "of", sentence2 = "A lot of words"
Output: false
Explanation:
No single sentence can be inserted inside one of the sentences to make it equal to the other.
Example 3:
Input: sentence1 = "Eating right now", sentence2 = "Eating"
Output: true
Explanation:
sentence2 can be turned to sentence1 by inserting "right now" at the end of the sentence.Constraints:
•
1 <= sentence1.length, sentence2.length <= 100•
sentence1 and sentence2 consist of lowercase and uppercase English letters and spaces.• The words in
sentence1 and sentence2 are separated by a single space.2024-10-07
2696. Minimum String Length After Removing Substrings
Topic: String, Stack, Simulation
Difficulty: Easy
Problem:
You are given a string
You can apply some operations to this string where, in one operation, you can remove any occurrence of one of the substrings
Return the minimum possible length of the resulting string that you can obtain.
Note that the string concatenates after removing the substring and could produce new
Example 1:
Example 2:
Constraints:
•
•
2696. Minimum String Length After Removing Substrings
Topic: String, Stack, Simulation
Difficulty: Easy
Problem:
You are given a string
s consisting only of uppercase English letters.You can apply some operations to this string where, in one operation, you can remove any occurrence of one of the substrings
"AB" or "CD" from s.Return the minimum possible length of the resulting string that you can obtain.
Note that the string concatenates after removing the substring and could produce new
"AB" or "CD" substrings.Example 1:
Input: s = "ABFCACDB"
Output: 2
Explanation: We can do the following operations:
- Remove the substring "ABFCACDB", so s = "FCACDB".
- Remove the substring "FCACDB", so s = "FCAB".
- Remove the substring "FCAB", so s = "FC".
So the resulting length of the string is 2.
It can be shown that it is the minimum length that we can obtain.
Example 2:
Input: s = "ACBBD"
Output: 5
Explanation: We cannot do any operations on the string so the length remains the same.
Constraints:
•
1 <= s.length <= 100•
s consists only of uppercase English letters.