七七老师の白日梦
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

删除子数组的最大得分:哈希滑动窗口法

写作时间:2026-08-27 08:31:09

题目

给你一个正整数数组 nums ,请你从中删除一个含有 若干不同元素 的子数组**。**删除子数组的 得分 就是子数组各元素之 和 。

返回 只删除一个 子数组可获得的 最大得分 。

如果数组 b 是数组 a 的一个连续子序列,即如果它等于 a[l],a[l+1],...,a[r] ,那么它就是 a 的一个子数组。

链接

1695. 删除子数组的最大得分

代码

import java.util.HashMap;
import java.util.Map;

class Solution {
    public int maximumUniqueSubarray(int[] nums) {
        Map<Integer,Integer> map = new HashMap<>();
        int left = 0;
        int count = 0;
        int max = 0;
        for (int right = 0;right < nums.length;right++) {
             map.put(nums[right],map.getOrDefault(nums[right],0) + 1);
             while (map.get(nums[right]) > 1) {
                 map.put(nums[left], map.get(nums[left]) - 1);
                 count -= nums[left];
                 left++;
             }
             count += nums[right];
             max = Math.max(max,count);
        }

        return max;
    }
}

‍

avatar

七七老师

分享代码日常

RECOMMENDED

七七旧事:复盘并改变写博客的方式

2026-07-02 22:54:38

字母异位词

2026-07-04 22:22:08

寻找两个正序数组的中位数:合并与二分

2026-07-08 15:56:26

Table of Contents