2913 - Subarrays Distinct Element Sum of Squares I (Easy)
Problem Link
https://leetcode.com/problems/subarrays-distinct-element-sum-of-squares-i/
Problem Statement
You are given a 0-indexedinteger array nums
.
The distinct count of a subarray of nums
is defined as:
- Let
nums[i..j]
be a subarray ofnums
consisting of all the indices fromi
toj
such that0 <= i <= j < nums.length
. Then the number of distinct values innums[i..j]
is called the distinct count ofnums[i..j]
.
Return the sum of the squares of distinct counts of all subarrays ofnums
.
A subarray is a contiguous non-empty sequence of elements within an array.
Example 1:
Input: nums = [1,2,1]
Output: 15
Explanation: Six possible subarrays are:
[1]: 1 distinct value
[2]: 1 distinct value
[1]: 1 distinct value
[1,2]: 2 distinct values
[2,1]: 2 distinct values
[1,2,1]: 2 distinct values
The sum of the squares of the distinct counts in all subarrays is equal to 12 + 12 + 12 + 22 + 22 + 22 = 15.
Example 2:
Input: nums = [1,1]
Output: 3
Explanation: Three possible subarrays are:
[1]: 1 distinct value
[1]: 1 distinct value
[1,1]: 1 distinct value
The sum of the squares of the distinct counts in all subarrays is equal to 12 + 12 + 12 = 3.
Constraints:
1 <= nums.length <= 100
1 <= nums[i] <= 100
Approach 1: Brute Force
Since the constraints are small, we can brute force each subarray by using two loops. For each element, we put it to a hash map. If the occurrence is , meaning this element is first appeared. We increase the distinct counts by . We calculate the sum of squares accordingly.
- C++
class Solution {
public:
int sumCounts(vector<int>& nums) {
int n = nums.size(), ans = 0;
for (int i = 0; i < n; i++) {
unordered_map<int, int> m;
int cnt = 0;
for (int j = i; j < n; j++) {
if (++m[nums[j]] == 1) cnt += 1;
ans += cnt * cnt;
}
}
return ans;
}
};