当前位置: 首页 > news >正文

Java解决长度为K子的数组中的的最大和

Java解决长度为K子的数组中的的最大和

01 题目

  • 给你一个整数数组 nums 和一个整数 k 。请你从 nums 中满足下述条件的全部子数组中找出最大子数组和:

    • 子数组的长度是 k,且
    • 子数组中的所有元素 各不相同 。

    返回满足题面要求的最大子数组和。如果不存在子数组满足这些条件,返回 0

    子数组 是数组中一段连续非空的元素序列。

    示例 1:

    输入:nums = [1,5,4,2,9,9,9], k = 3
    输出:15
    解释:nums 中长度为 3 的子数组是:
    - [1,5,4] 满足全部条件,和为 10 。
    - [5,4,2] 满足全部条件,和为 11 。
    - [4,2,9] 满足全部条件,和为 15 。
    - [2,9,9] 不满足全部条件,因为元素 9 出现重复。
    - [9,9,9] 不满足全部条件,因为元素 9 出现重复。
    因为 15 是满足全部条件的所有子数组中的最大子数组和,所以返回 15 。
    

    示例 2:

    输入:nums = [4,4,4], k = 3
    输出:0
    解释:nums 中长度为 3 的子数组是:
    - [4,4,4] 不满足全部条件,因为元素 4 出现重复。
    因为不存在满足全部条件的子数组,所以返回 0 。
    

    提示:

    • 1 <= k <= nums.length <= 105
    • 1 <= nums[i] <= 105

02 知识点

  • 弹窗移动
  • 有序数对map的使用

03 我的题解思路

public class maximumSubarraySum {public static void main(String[] args) {
//		测试数据int[] nums= {1,1,1,7,8,9};System.out.println(maximumSubarraySum(nums, 3));}public static long maximumSubarraySum(int[] nums, int k) {long rs=0;//最终返回的答案long max=0;//局部最大值Map<Integer, Integer> map=new HashMap<>();
//			 弹窗最开始,记录0到k中,每个值出现的次数for (int i = 0; i < k; i++) {max+=nums[i];
//				 设置每个值出现的次数,第一次为0+1,之后每出现一次加一map.put(nums[i], map.getOrDefault(nums[i],0)+1);}
//			 利用map不会重复,判断第一次弹窗的元素是否符合条件if(map.size()==k) {rs=max;}
//			 接着循环剩下的元素for (int i = k; i < nums.length; i++) {
//				 整个弹窗向右移动max+=nums[i];//弹窗右边移动map.put(nums[i], map.getOrDefault(nums[i],0)+1);//记录新右边界的值max-=nums[i-k];//弹窗左边移动int index=map.get(nums[i-k]);//获得新左边界的出现次数if(index==1) {map.remove(nums[i-k]);//只出现一次,就直接去掉}else {map.put(nums[i-k], index-1);//出现大于一次,就次数减一}if(map.size()==k) {//判断本次弹窗的元素是否符合条件,符合则比较值rs=Math.max(max, rs);}} return rs;}
}
http://www.lryc.cn/news/308420.html

相关文章:

  • 【手机端测试】adb基础命令
  • 【数据结构】深入探讨二叉树的遍历和分治思想(一)
  • jQuery AJAX get() 和 post() 方法—— W3school 详解 简单易懂(二十四)
  • Linux中如何进行LVM逻辑卷扩容?
  • 现代企业架构框架——应用架构
  • 期货开户保证金保障市场正常运转
  • WebGIS----wenpack
  • 【Maven】Maven 基础教程(二):Maven 的使用
  • mirthConnect忽略HTTPS SSL验证
  • libvirt命名空间xmlns:qemu的使用
  • ywtool check命令及ywtool clean命令
  • java009 - Java面向对象基础
  • MWC 2024 | 广和通携手意法半导体发布智慧家居解决方案
  • threejs 大场景下,对小模型进行贴图处理
  • 云畅科技携手飞腾打造智慧园区信创低代码综合解决方案
  • Dell R730 2U服务器实践1:开机管理
  • 『大模型笔记』Sora:探索大型视觉模型的前世今生、技术内核及未来趋势
  • python中的字符串处理
  • java之servlet
  • 重推请求之curl和fiddler
  • 基于redis实现【最热搜索】和【最近搜索】功能
  • 1.2 debug的六种指令的使用,四个通用寄存器
  • C# OpenVINO Crack Seg 裂缝分割 裂缝检测
  • 前后端项目-part03
  • Java 1.8 docker 镜像制作
  • python中自定义报错
  • part1:sora技术
  • RK3568平台开发系列讲解(基础篇)文件私有数据
  • 跨时钟信号处理方法
  • OD(13)之Mermaid饼图和象限图