比赛地址 :
https://leetcode.cn/contest/biweekly-contest-119/
t1 :
直接哈希表 加 暴力 统计就行了
class Solution {
public:
vector<int> findIntersectionValues(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int,int> mp1,mp2;
int n = nums1.size() , m = nums2.size();
for(int& x : nums1) mp1[x]++;
for(int& x : nums2) mp2[x]++;
int a = 0 ,b = 0 ;
for(int i=0;i<n;i++){
if(mp2.find(nums1[i])!=mp2.end()){
a++;
}
}
for(int j = 0;j<m;j++){
if(mp1.find(nums2[j])!=mp1.end()){
b++;
}
}
vector<int> ans;
ans.push_back(a);
ans.push_back(b);
return ans;
}
};
t2
直接模拟即可
class Solution {
public:
bool pd(char a, char b){
if(a==b) return true;
else if(a==b-1 || a==b+1) return true;
else return false;
}
int removeAlmostEqualCharacters(string w) {
// 直接模拟即可
int n = w.size();
int ans = 0;
for(int i=0;i<n;i++){
int j = i+1;
while(j<n && pd(w[j-1],w[j])) j++;
int len = j - i ;
ans += len / 2;
i = j - 1 ;
}
return ans;
}
};
t3
直接滑动窗口来记录每个数的频次,维护一个滑动窗口满足题目条件;
class Solution {
public:
int maxSubarrayLength(vector<int>& nums, int k) {
int n = nums.size();
int l = 0 , r = 0 ;
int ans = 0 ;
unordered_map<int,int> mp;
while(r < n){
mp[nums[r]]++;
while(mp[nums[r]]>k){
mp[nums[l++]]--;
}
ans = max(ans,r-l+1);
r ++;
}
return ans;
}
};