119场双周赛复盘

这周没有打比赛,玩老头环乐(玩物丧志),

所以是补题了

第一题

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;
    }
}

 总结

手速场,不仔细,急,该骂 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值