Longest Square Streak in an Array - Problem
You are given an integer array nums. A subsequence of nums is called a square streak if:
- The length of the subsequence is at least 2, and
- after sorting the subsequence, each element (except the first element) is the square of the previous number.
Return the length of the longest square streak in nums, or return -1 if there is no square streak.
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.
Input & Output
Example 1 — Perfect Square Chain
$
Input:
nums = [4,3,6,16,8,2]
›
Output:
3
💡 Note:
We can form the square streak [2,4,16]: 2² = 4, 4² = 16. The longest streak has length 3.
Example 2 — No Valid Streak
$
Input:
nums = [2,3,5,6,7]
›
Output:
-1
💡 Note:
No number in the array has its square also in the array, so no square streak can be formed.
Example 3 — Multiple Short Streaks
$
Input:
nums = [2,4,8,16]
›
Output:
3
💡 Note:
We can form the square streak [2,4,16]: 2² = 4, 4² = 16. The longest streak has length 3.
Constraints
- 2 ≤ nums.length ≤ 105
- -105 ≤ nums[i] ≤ 105
Visualization
Tap to expand
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code