⭐️⭐️⭐️
# 題目敘述
Given an array nums
of integers, return the length of the longest arithmetic subsequence in nums
.
Note that:
- A subsequence is an array that can be derived from another array by deleting some or no elements without changing the order of the remaining elements.
- A sequence
seq
is arithmetic ifseq[i + 1] - seq[i]
are all the same value (for0 <= i < seq.length - 1
).
# Example 1
Input: nums = [3,6,9,12]
Output: 4
Explanation: The whole array is an arithmetic sequence with steps of length = 3.
# Example 2
Input: nums = [9,4,7,2,10]
Output: 3
Explanation: The longest arithmetic subsequence is [4,7,10].
# Example 3
Input: nums = [20,1,15,3,10,5,8]
Output: 4
Explanation: The longest arithmetic subsequence is [20,15,10,5].
# 解題思路
# Solution
import java.util.HashMap; | |
import java.util.Map; | |
class Solution { | |
public int longestArithSeqLength(int[] nums) { | |
Map<Integer, Integer>[] dp = new HashMap[nums.length]; | |
int longest = 2; | |
for(int i = 0; i < nums.length; i++){ | |
dp[i] = new HashMap<>(); | |
for(int j = 0; j < i; j++){ | |
int diff = nums[i] - nums[j]; | |
dp[j].put(diff, dp[i].getOrDefault(diff, 1) + 1); | |
longest = Math.max(longest, dp[j].get(diff)); | |
} | |
} | |
return longest; | |
} | |
} |
單字
arithmetic
算數 n.
the part of mathematics that involves the adding and multiplying, etc. of numbers
subsequence
子序列 n.
something that follows something else
片語 & 搭配詞
!! !!