这周没有打比赛,玩老头环乐(玩物丧志),
所以是补题了
第一题
100130找到俩个数组中的公共元素
class Solution {
public int[] findIntersectionValues(int[] nums1, int[] nums2) {
HashMap<Integer,Integer>map1=new HashMap<>();
HashMap<Integer,Integer>map2=new HashMap<>();
for(int num1:nums1){
map1.putIfAbsent(num1,0);
map1.put(num1,map1.get(num1)+1);
}
for(int num2:nums2){
map2.putIfAbsent(num2,0);
map2.put(num2,map2.get(num2)+1);
}
int ans[]=new int[2];
int k=0;
for(int i=0;i<nums1.length;i++){
if(map2.containsKey(nums1[i])){
k++;
}
}
ans[0]=k;
k=0;
for(int i=0;i<nums2.length;i++){
if(map1.containsKey(nums2[i])){
k++;
}
}
ans[1]=k;
return ans;
}
}
我才不会说这题,我没有看懂题目,wrong了俩发
第二题
100152. 消除相邻近似相等字符
class Solution {
public int removeAlmostEqualCharacters(String word) {
char[]chars=word.toCharArray();
int ans=0;
for(int i=1;i<chars.length;){
if(Math.abs(chars[i]-chars[i-1])<=1){
ans++;
i++;
}
i++;
}
int k=0;
for(int i=chars.length-2;i>=0;){
if(Math.abs(chars[i]-chars[i+1])<=1){
k++;
i--;
}
i--;
}
ans=Math.max(ans,k);
return ans;
}
}
第三题
https://leetcode.cn/problems/length-of-longest-subarray-with-at-most-k-frequency/description/
class Solution {
public int maxSubarrayLength(int[] nums, int k) {
int ans=1;
Map<Integer,Integer> map=new HashMap<>();
int l=0;
int r=0;
for(;r<nums.length;r++){
map.putIfAbsent(nums[r],0);
map.put(nums[r],map.get(nums[r])+1);
if(map.get(nums[r])>k){
while(l<r){
if(nums[l]==nums[r]){
break;
}
map.put(nums[l],map.get(nums[l])-1);
l++;
}
map.put(nums[r],k);
l++;
}
ans=Math.max(ans,r-l+1);
}
// System.out.println(l);
// System.out.println(r);
ans=Math.max(ans,r-l);
return ans;
}
}
第三题
2958. 最多 K 个重复元素的最长子数组
class Solution {
public int maxSubarrayLength(int[] nums, int k) {
int ans=1;
Map<Integer,Integer> map=new HashMap<>();
int l=0;
int r=0;
for(;r<nums.length;r++){
map.putIfAbsent(nums[r],0);
map.put(nums[r],map.get(nums[r])+1);
if(map.get(nums[r])>k){
while(l<r){
if(nums[l]==nums[r]){
break;
}
map.put(nums[l],map.get(nums[l])-1);
l++;
}
map.put(nums[r],k);
l++;
}
ans=Math.max(ans,r-l+1);
}
// System.out.println(l);
// System.out.println(r);
ans=Math.max(ans,r-l);
return ans;
}
}
总结
手速场,不仔细,急,该骂