You are on page 1of 16

 Problem statement

Given an array of integers nums and an integer target, return indices of the two numbers such
that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the
same element twice.

You can return the answer in any order.

Example 1:

Input: nums = [2,7,11,15], target = 9

Output: [0,1]

Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6

Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6

Output: [0,1]

Constraint:

Get the solution with Time complexity <= O(n)


 Problem statement
Maximum Subarray
Given an integer array nums, find the subarray with the largest sum, and return its
sum.

Test case 1:
Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explanation: The subarray [4,-1,2,1] has the largest sum 6.

Test case 2:
Input: nums = [1]
Output: 1
Explanation: The subarray [1] has the largest sum 1.

Test case 3:
Input: nums = [5,4,-1,7,8]
Output: 23
Explanation: The subarray [5,4,-1,7,8] has the largest sum 23.

Constraint :
Get the solution with Time complexity <= O(n).
 Problem statement:

Kids With the Greatest Number of Candies

There are n kids with candies. You are given an integer array candies, where each
candies[i] represents the number of candies the ith kid has, and an integer
extraCandies, denoting the number of extra candies that you have.

Return a boolean array result of length n, where result[i] is true if, after giving the ith
kid all the extraCandies, they will have the greatest number of candies among all the
kids, or false otherwise.

Note that multiple kids can have the greatest number of candies.

Test case 1:
Input: candies = [2,3,5,1,3], extraCandies = 3
Output: [true,true,true,false,true]
Explanation: If you give all extraCandies to:
- Kid 1, they will have 2 + 3 = 5 candies, which is the greatest among the kids.
- Kid 2, they will have 3 + 3 = 6 candies, which is the greatest among the kids.
- Kid 3, they will have 5 + 3 = 8 candies, which is the greatest among the kids.
- Kid 4, they will have 1 + 3 = 4 candies, which is not the greatest among the kids.
- Kid 5, they will have 3 + 3 = 6 candies, which is the greatest among the kids.

Test case 2:
Input: candies = [4,2,1,1,2], extraCandies = 1
Output: [true,false,false,false,false]
Explanation: There is only 1 extra candy.
Kid 1 will always have the greatest number of candies, even if a different kid is given
the extra candy.

Test case 3:
Input: candies = [12,1,12], extraCandies = 10
Output: [true,false,true]

Constraint:

Get the solution with Time complexity <= O(n).


 Problem statement

Can Place Flowers

You have a long flowerbed in which some of the plots are planted, and some are not.
However, flowers cannot be planted in adjacent plots.

Given an integer array flowerbed containing 0's and 1's, where 0 means empty and 1
means not empty, and an integer n, return true if n new flowers can be planted in the
flowerbed without violating the no-adjacent-flowers rule and false otherwise.

Test case 1:
Input: flowerbed = [1,0,0,0,1], n = 1
Output: true

Test case 2:
Input: flowerbed = [1,0,0,0,1], n = 2
Output: false

Test case 3:
Input: flowerbed = [1,0,0,0,0,0,1], n = 2
Output: true

Constraint:

Get the solution with Time complexity <= O(n).


 Problem statement

Third Maximum Number

Given an integer array nums, return the third distinct maximum number in this array.
If the third maximum does not exist, return the maximum number.

Test case 1:
Input: nums = [3,2,1]
Output: 1
Explanation:
The first distinct maximum is 3.
The second distinct maximum is 2.
The third distinct maximum is 1.

Test case 2:
Input: nums = [1,2]
Output: 2
Explanation:
The first distinct maximum is 2.
The second distinct maximum is 1.
The third distinct maximum does not exist, so the maximum (2) is returned instead.

Test case 3:
Input: nums = [2,2,3,1]
Output: 1
Explanation:
The first distinct maximum is 3.
The second distinct maximum is 2 (both 2's are counted together since they have the
same value).
The third distinct maximum is 1.

Constraint:

Get the solution with Time complexity <= O(n).


 Problem statement

Best Time to Buy and Sell Stock

You are given an array prices where prices[i] is the price of a given stock on the ith
day.
You want to maximize your profit by choosing a single day to buy one stock and
choosing a different day in the future to sell that stock.
Return the maximum profit you can achieve from this transaction. If you cannot
achieve any profit, return 0.

Test case 1:
Input: prices = [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
Note that buying on day 2 and selling on day 1 is not allowed because you must buy
before you sell.

Test case 2:
Input: prices = [7,6,4,3,1]
Output: 0
Explanation: In this case, no transactions are done and the max profit = 0.

Test case 3:
Input: prices = [3, 8, 1, 4, 6, 10]
Output: 9
Explanation: Buy on day 1 (price = 3) and sell on day 6 (price = 10), profit = 10-3 =7.

Constraint:

Get the solution with Time complexity <= O(n).


 Problem statement

Min Cost Climbing Stairs

You are given an integer array cost where cost[i] is the cost of ith step on a staircase.
Once you pay the cost, you can either climb one or two steps.
You can either start from the step with index 0, or the step with index 1.
Return the minimum cost to reach the top of the floor.

Test case 1:
Input: cost = [10,15,20]
Output: 15
Explanation: You will start at index 1.
- Pay 15 and climb two steps to reach the top.
The total cost is 15.

Test case 2:
Input: cost = [1,100,1,1,1,100,1,1,100,1]
Output: 6
Explanation: You will start at index 0.
- Pay 1 and climb two steps to reach index 2.
- Pay 1 and climb two steps to reach index 4.
- Pay 1 and climb two steps to reach index 6.
- Pay 1 and climb one step to reach index 7.
- Pay 1 and climb two steps to reach index 9.
- Pay 1 and climb one step to reach the top.
The total cost is 6.

Test case 3:
Input: cost = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Output: 27
Explanation: You will start at index 0.
- Pay 1 and climb two steps to reach index 2.
- Pay 3 and climb two steps to reach index 4.
- Pay 5 and climb two steps to reach index 6.
- Pay 7 and climb two steps to reach index 8.
- Pay 9 and climb two steps to reach the top.
The total cost is 1 + 3 + 5 + 7 + 9 = 25.

Constraint : Get the solution with Time complexity <= O(n).


 Problem statement
Coin Change
You are given an integer array coins representing coins of different denominations and
an integer amount representing a total amount of money.
Return the fewest number of coins that you need to make up that amount. If that
amount of money cannot be made up by any combination of the coins, return -1.
You may assume that you have an infinite number of each kind of coin.

Test case 1:
Input: coins = [1, 5, 7, 11, 13, 17], amount = 28
Output: 4
Explanation: The optimal way is to use coins with denominations 11, 11, 5, and 1,
making up the total amount of 28.

Test case 2:

Input: coins = [3, 8, 15, 25, 30], amount = 48

Output: 2

Test case 3:

Explanation: The optimal way is to use coins with denominations 15 and 30, making
up the total amount of 48.

Input: coins = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20], amount = 37

Explanation: The optimal way is to use coins with denominations 18, 12, 6, 1, and 1,

making up the total amount of 37.

Constraint:
Get the solution with Time complexity <= O(n).
 Problem statement
Maximum Twin Sum of a Linked List
In a linked list of size n, where n is even, the ith node (0-indexed) of the linked list is known
as the twin of the (n-1-i)th node, if 0 <= i <= (n / 2) - 1.
For example, if n = 4, then node 0 is the twin of node 3, and node 1 is the twin of node 2. These
are the only nodes with twins for n = 4.
The twin sum is defined as the sum of a node and its twin.
Given the head of a linked list with even length, return the maximum twin sum of the linked
list.
Test case 1:
Input: head = [5,4,2,1]
Output: 6
Explanation:
Nodes 0 and 1 are the twins of nodes 3 and 2, respectively. All have twin sum = 6.
There are no other nodes with twins in the linked list.
Thus, the maximum twin sum of the linked list is 6.
Test case 2:
Input: head = [4,2,2,3]
Output: 7
Explanation:
The nodes with twins present in this linked list are:
- Node 0 is the twin of node 3 having a twin sum of 4 + 3 = 7.
- Node 1 is the twin of node 2 having a twin sum of 2 + 2 = 4.
Thus, the maximum twin sum of the linked list is max(7, 4) = 7.
Test case 3:
Input: head = [1,100000]
Output: 100001
Explanation:
There is only one node with a twin in the linked list having twin sum of 1 + 100000 = 100001
Constraints:
Get the solution with Time complexity <= O(n)
 Problem statement

Jump Game :
You are given a 0-indexed array of integers nums of length n. You are initially
positioned at nums[0].
Each element nums[i] represents the maximum length of a forward jump from index i.
In other words, if you are at nums[i], you can jump to any nums[i + j]
where:0 <= j <= nums[i] and i + j < n

Return the minimum number of jumps to reach nums[n - 1]. The test cases are
generated such that you can reach nums[n - 1].

Test Case 1:
Input: nums = [2,3,1,1,4]
Output: 2
Explanation: The minimum number of jumps to reach the last index is 2. Jump 1 step
from index 0 to 1, then 3 steps to the last index.

Test Case 2:
Input: nums = [2,3,0,1,4]
Output: 2

Test Case 3:
Input: nums = [2,1,2,1,4]
Output: 3

Constraint:
Get the solution with Time complexity <= O(n).
 Problem statement
Given an integer array nums and an integer val, remove all occurrences of val in nums in-
place. The order of the elements may be changed. Then return the number of elements in
nums which are not equal to val.

Consider the number of elements in nums which are not equal to val be k, to get accepted,
you need to do the following things:

Change the array nums such that the first k elements of nums contain the elements which are
not equal to val. The remaining elements of nums are not important as well as the size of
nums. Return k.

Test Case 1:

Input: nums = [3,2,2,3], val = 3

Output: 2, nums = [2,2,_,_]

Explanation: Your function should return k = 2, with the first two elements of nums being 2.

It does not matter what you leave beyond the returned k (hence they are underscores).

Test Case 2:

Input: nums = [0,1,2,2,3,0,4,2], val = 2

Output: 5, nums = [0,1,4,0,3,_,_,_]

Explanation: Your function should return k = 5, with the first five elements of nums
containing 0, 0, 1, 3, and 4.

Note that the five elements can be returned in any order.

It does not matter what you leave beyond the returned k (hence they are underscores)

Test Case 3:

Input: nums = [1,1,1,1,3,0,4,2], val = 2

Output: 4, nums = [0,2,4,,3,_,_,_]

Explanation: Your function should return k = 4, with the first five elements of nums
containing 0, 2, 3, and 4.

Note that the five elements can be returned in any order.

It does not matter what you leave beyond the returned k (hence they are underscores)
Constraint : Get the solution with Time complexity <= O(n)
 Problem statement
Custom Sort String
You are given two strings order and s. All the characters of order are unique and were sorted
in some custom order previously.

Permute the characters of s so that they match the order that order was sorted. More
specifically, if a character x occurs before a character y in order, then x should occur before y
in the permuted string.

Return any permutation of s that satisfies this property.

Test case 1:

Input: order = "cba", s = "abcd"

Output: "cbad"

Explanation:

"a", "b", "c" appear in order, so the order of "a", "b", "c" should be "c", "b", and "a".

Since "d" does not appear in order, it can be at any position in the returned string. "dcba",
"cdba", "cbda" are also valid outputs.

Test case 2:

Input: order = "cbafg", s = "abcd"

Output: "cbad"

Test Case 3:

Input: order = "xyz", s = "xzyabc"

Output: "xzyabc"

Explanation:

The given order is "xyz," and the string s is "xzyabc." The characters "x," "y," and "z" appear
in order, so they should maintain their relative order in the permuted string. The remaining
characters ("a," "b," "c") can be placed in any order among themselves since they don't have a
specific order in the given 'order' string. Therefore, "xzyabc" is a valid output.

Constraint : Get the solution with Time complexity <= O(n).


 Problem statement
Maximum Number of Removable Characters
You are given two strings s and p where p is a subsequence of s. You are also given a distinct
0-indexed integer array removable containing a subset of indices of s (s is also 0-indexed).

You want to choose an integer k (0 <= k <= removable.length) such that, after removing k
characters from s using the first k indices in removable, p is still a subsequence of s. More
formally, you will mark the character at s[removable[i]] for each 0 <= i < k, then remove all
marked characters and check if p is still a subsequence.

Return the maximum k you can choose such that p is still a subsequence of s after the
removals.

A subsequence of a string is a new string generated from the original string with some
characters (can be none) deleted without changing the relative order of the remaining
characters.

Test case 1:

Input: s = "abcacb", p = "ab", removable = [3,1,0]

Output: 2

Explanation: After removing the characters at indices 3 and 1, "abcacb" becomes "accb"."ab"
is a subsequence of "accb".If we remove the characters at indices 3, 1, and 0, "abcacb"
becomes "ccb", and "ab" is no longer a subsequence.Hence, the maximum k is 2.

Test case 2:

Input: s = "abcbddddd", p = "abcd", removable = [3,2,1,4,5,6]

Output: 1

Explanation: After removing the character at index 3, "abcbddddd" becomes


"abcddddd"."abcd" is a subsequence of "abcddddd".

Test case 3:

Input: s = "abcab", p = "abc", removable = [0,1,2,3,4]

Output: 0

Explanation: If you remove the first index in the array removable, "abc" is no longer a
subsequence.

Constraint: Get the solution with Time complexity <= O(n).


 Problem statement
Count the Number of Fair Pairs
Given a 0-indexed integer array nums of size n and two integers lower and upper, return the
number of fair pairs.

A pair (i, j) is fair if:

0 <= i < j < n, and

lower <= nums[i] + nums[j] <= upper

Test case 1:

Input: nums = [0,1,7,4,4,5], lower = 3, upper = 6

Output: 6

Explanation: There are 6 fair pairs: (0,3), (0,4), (0,5), (1,3), (1,4), and (1,5).

Test case 2:

Input: nums = [1,7,9,2,5], lower = 11, upper = 11

Output: 1

Explanation: There is a single fair pair: (2,3).

Test Case 3:

Input: nums = [2, 5, 8, 1, 9, 4], lower = 7, upper = 15

Output: 10

Explanation: There are 10 fair pairs: (0, 1), (0, 2), (0, 4), (1, 2), (1, 3), (1, 5), (2, 3), (2, 4), (3,
4), and (4, 5). The pairs satisfy the condition 7 <= nums[i] + nums[j] <= 15.

Constraint: Get the solution with Time complexity <= O(n).


 Problem statement
Two City Scheduling
A company is planning to interview 2n people. Given the array costs where costs[i] = [aCosti,
bCosti], the cost of flying the ith person to city a is aCosti, and the cost of flying the ith
person to city b is bCosti.

Return the minimum cost to fly every person to a city such that exactly n people arrive in
each city.

Test case 1:

Input: costs = [[10,20],[30,200],[400,50],[30,20]]

Output: 110

Explanation:

The first person goes to city A for a cost of 10.

The second person goes to city A for a cost of 30.

The third person goes to city B for a cost of 50.

The fourth person goes to city B for a cost of 20.

The total minimum cost is 10 + 30 + 50 + 20 = 110 to have half the people interviewing in
each city.

Test case 2:

Input: costs = [[259,770], [448,54],[926,667],[184,139],[840,118],[577,469]]

Output: 1859

Test case 3:

Input:

costs =[[515,563],[451,713],[537,709],[343,819],[855,779],[457,60],[650,359],[631,42]]

Output: 3086

Constraint: Get the solution with Time complexity <= O(n).


 Problem statement
House Robber
You are a professional robber planning to rob houses along a street. Each house has a certain
amount of money stashed, the only constraint stopping you from robbing each of them is that
adjacent houses have security systems connected and it will automatically contact the police
if two adjacent houses were broken into on the same night.

Given an integer array nums representing the amount of money of each house, return the
maximum amount of money you can rob tonight without alerting the police.

Test case 1:

Input: nums = [1,2,3,1]

Output: 4

Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).

Total amount you can rob = 1 + 3 = 4.

Test case 2:

Input: nums = [2,7,9,3,1]

Output: 12

Explanation: Rob house 1 (money = 2), rob house 3 (money = 9) and rob house 5 (money =
1).

Total amount you can rob = 2 + 9 + 1 = 12.

Test case 2:

Input: nums = [5, 1, 2, 6, 20, 4, 8, 10, 12]

Output: 45

Explanation: Rob house 1 (money = 5), rob house 4 (money = 6), rob house 6 (money = 4),
rob house 8 (money = 10), and rob house 9 (money = 12).

Total amount you can rob = 5 + 6 + 4 + 10 + 12 = 45.

Constraint: Get the solution with Time complexity <= O(n).

You might also like