Longest Arithmetic Subsequence - Amazon Top Interview Questions
Problem Statement :
Given a list of integers nums, return the length of the longest arithmetic subsequence. A sequence B[i] is defined as an arithmetic sequence if B[i+1] - B[i] have the same value for every 0 ≤ i < len(B) - 1. For example, [1, 5, 9, 13, 17] is the longest arithmetic subsequence of [-30, 1, 10, 5, 9, -20, 13, 17]. Constraints n ≤ 1,000 where n is the length of nums Example 1 Input nums = [1, 3, 5, 7, 9] Output 5 Explanation The whole array is arithmetic since the difference between each consecutive element is 2. Example 2 Input nums = [1, 3, 6, 7, 5, 8, 9] Output 4 Explanation [6, 7, 8, 9] is the longest arithmetic subsequence.
Solution :
Solution in C++ :
unordered_map<int, int> dp[1005];
int solve(vector<int>& nums) {
int n = nums.size();
int ret = min(1, n);
for (int i = 0; i < n; i++) {
dp[i].clear();
for (int j = 0; j < i; j++) {
int diff = nums[i] - nums[j];
if (dp[j].count(diff)) {
dp[i][diff] = max(dp[i][diff], dp[j][diff] + 1);
} else {
dp[i][diff] = 2;
}
ret = max(ret, dp[i][diff]);
}
}
return ret;
}
Solution in Java :
import java.util.*;
class Solution {
public int solve(int[] nums) {
if (nums.length == 0)
return 0;
HashMap<Integer, Integer>[] maps = new HashMap[nums.length];
int res = 1;
for (int j = 0; j != nums.length; j++) {
final HashMap<Integer, Integer> map = maps[j] = new HashMap<>();
for (int i = 0; i != j; i++) {
int length = maps[i].getOrDefault(nums[j] - nums[i], 1) + 1;
map.put(nums[j] - nums[i], length);
res = Math.max(res, length);
}
}
return res;
}
}
Solution in Python :
class Solution:
def solve(self, arr):
n = len(arr)
if n <= 1:
return n
res = 0
dp = defaultdict(lambda: 1)
for i in range(1, n):
for j in range(i):
diff = arr[i] - arr[j]
dp[i, diff] = dp[j, diff] + 1
res = max(res, dp[i, diff])
return res
View More Similar Problems
Pair Sums
Given an array, we define its value to be the value obtained by following these instructions: Write down all pairs of numbers from this array. Compute the product of each pair. Find the sum of all the products. For example, for a given array, for a given array [7,2 ,-1 ,2 ] Note that ( 7 , 2 ) is listed twice, one for each occurrence of 2. Given an array of integers, find the largest v
View Solution →Lazy White Falcon
White Falcon just solved the data structure problem below using heavy-light decomposition. Can you help her find a new solution that doesn't require implementing any fancy techniques? There are 2 types of query operations that can be performed on a tree: 1 u x: Assign x as the value of node u. 2 u v: Print the sum of the node values in the unique path from node u to node v. Given a tree wi
View Solution →Ticket to Ride
Simon received the board game Ticket to Ride as a birthday present. After playing it with his friends, he decides to come up with a strategy for the game. There are n cities on the map and n - 1 road plans. Each road plan consists of the following: Two cities which can be directly connected by a road. The length of the proposed road. The entire road plan is designed in such a way that if o
View Solution →Heavy Light White Falcon
Our lazy white falcon finally decided to learn heavy-light decomposition. Her teacher gave an assignment for her to practice this new technique. Please help her by solving this problem. You are given a tree with N nodes and each node's value is initially 0. The problem asks you to operate the following two types of queries: "1 u x" assign x to the value of the node . "2 u v" print the maxim
View Solution →Number Game on a Tree
Andy and Lily love playing games with numbers and trees. Today they have a tree consisting of n nodes and n -1 edges. Each edge i has an integer weight, wi. Before the game starts, Andy chooses an unordered pair of distinct nodes, ( u , v ), and uses all the edge weights present on the unique path from node u to node v to construct a list of numbers. For example, in the diagram below, Andy
View Solution →Heavy Light 2 White Falcon
White Falcon was amazed by what she can do with heavy-light decomposition on trees. As a resut, she wants to improve her expertise on heavy-light decomposition. Her teacher gave her an another assignment which requires path updates. As always, White Falcon needs your help with the assignment. You are given a tree with N nodes and each node's value Vi is initially 0. Let's denote the path fr
View Solution →