LeetCode 第 45 场双周赛 ( rank 582 / 1676 )

LeetCode 第 45 场双周赛

这次的比较简单叭

在这里插入图片描述




第一题: 5657. 唯一元素的和

在这里插入图片描述


因为出现一次的数字不止一个两个, 所以通过 哈希表 来找到出现过一次的数字

最后哈希表遍历统计即可



AC Code

class Solution {
    public int sumOfUnique(int[] nums) {
        int ans = 0;
        Map<Integer, Integer> map = new HashMap<>();
        int len = nums.length;
        for(int i = 0; i < len; i++) {
            int cnt = map.getOrDefault(nums[i], 0);
            map.put(nums[i], cnt + 1);
        }
        
        for(Integer key : map.keySet()) {
            if(map.get(key) == 1) ans += key;
        }
        
        return ans;
    }
}



第二题: 5658. 任意子数组和的绝对值的最大值
在这里插入图片描述


前缀和

要找到子数组绝对值的最大和

得到数组的前缀和

然后所以答案就藏在 前缀和中 (最大值 - 最小值) 、最大值、最小值 之中



AC Code

class Solution {
    public int maxAbsoluteSum(int[] nums) {
        
        int len = nums.length;
        int ans = 0;
        for(int i = 1; i < len; i++) nums[i] += nums[i - 1];
        
        System.out.println(Arrays.toString(nums));
        
        int mx = -(int)1e5, mn = (int)1e5;
        for(int i = 0; i < len; i++) {
            if(nums[i] > mx) mx = nums[i];
            if(nums[i] < mn) mn = nums[i];
        }
        //						最小值		(最大值 - 最小值)      最大值
        return Math.max(Math.max(Math.abs(mn), mx - mn), Math.abs(mx));
    }
}



第三题: 5659. 删除字符串两端相同字符后的最短长度

在这里插入图片描述

直接模拟了下就过了。

首尾双指针,同时去掉所有相同字符的前后缀, 同时更新答案即可.



AC Code

class Solution {
    public int minimumLength(String s) {
        char[] cs = s.toCharArray();
        int len = cs.length;
        int left = 0, right = len - 1;
        int ans = len;
        
        while(left < right) {
            char a = cs[left], b = cs[right];
            if(a != b) break;
            // 
            while(left < right && cs[left] == a) {
                left++;
                ans--;
            }
            while(left <= right && cs[right] == a) {
                right--;
                ans--;
            }
        }
        
        return ans;
    }
}



第四题: 5660. 最多可以参加的会议数目 II

在这里插入图片描述



AC Code





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值