力扣318:
第二题:2461. 长度为 K 子数组中的最大和 - 力扣(Leetcode)
- 使用map维护窗口大小为
k
的元素的个数; - 当
map.size == k
, 更新窗口内最大值;
class Solution {
public:
long long maximumSubarraySum(vector<int>& nums, int k) {
unordered_map<int, int> mp;
long long sum = 0;
for (int i = 0; i < k; i++) {
mp[nums[i]]++;
sum += nums[i];
}
long long ans = 0;
if (mp.size() == k) {
ans = sum;
}
for (int i = k; i < nums.size(); i++) {
mp[nums[i - k]]--;
mp[nums[i]]++;
sum += nums[i] - nums[i - k];
if (mp[nums[i - k]] == 0) {
mp.erase(nums[i - k]);
}
if (mp.size() == k) {
ans = max(ans, sum);
}
}
return ans;
}
};
acw76:
把所有的字符数量平方加起来
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
long long cnt=0;
map<char,long long>mp;
for(int i=0;i<s.size();i++)
mp[s[i]]++;
for(auto x:mp)
cnt+=x.second*x.second;
cout<<cnt<<endl;
}