小于等于K的最大子数组累加和

简介: 小于等于K的最大子数组累加和

题目

请返回arr中,求子数组的累加和,是<=K的并且是最大的
返回这个最大的累加和

解题思路

假设0~ 57整体累加和1000,求< =300的累加和怎么最大
其实就是求之前有哪个前缀和是>=700且最接近

1)0-0看有没有>=700的前缀和,没有,前缀和为40
2)0-1看有没有>=700的前缀和,没有,前缀和为100
3)0-2看有没有>=700的前缀和,没有,前缀和为70
...
n)0-23前缀和为710
即24-57的累加和为小于等于300最大的累加和

用有序表存储数据,可以拿到离700最近的数字

代码

public static int getMaxLessOrEqualK(int[] arr, int K) {
    // 记录i之前的,前缀和,按照有序表组织
    TreeSet<Integer> set = new TreeSet<Integer>();
    // 一个数也没有的时候,就已经有一个前缀和是0了
    set.add(0);
    int max = Integer.MIN_VALUE;
    int sum = 0;
    // 每一步的i,都求子数组必须以i结尾的情况下,求个子数组的累加和,是<=K的,并且是最大的
    for (int i = 0; i < arr.length; i++) {
        sum += arr[i]; // sum -> arr[0..i];
        if (set.ceiling(sum - K) != null) {
            max = Math.max(max, sum - set.ceiling(sum - K));
        }
        set.add(sum); // 当前的前缀和加入到set中去
    }
    return max;

}
相关文章
|
存储 JavaScript 前端开发
Vue 和 HTML FormData配合axios或ajax上传文件,提交表单数据
Vue 和 HTML FormData配合axios或ajax上传文件,提交表单数据
775 0
|
11月前
|
负载均衡 网络协议 网络安全
SLB-Backend多实例部署配置健康检查
【10月更文挑战第22天】
226 3
|
人工智能
三款Github Copilot的免费替代
三款Github Copilot的免费替代
1000 0
|
安全 Java C++
CAS自旋锁到底是什么?为什么能实现线程安全?
本文是博主对多线程学习总结记录,希望对大家有所帮助。
1460 0
CAS自旋锁到底是什么?为什么能实现线程安全?
|
12月前
|
存储 安全 机器人
MemoryScope:为LLM聊天机器人配备的长期记忆系统
如何选择合适的方法构建自己的智能体助理呢?这里向您介绍强大、低延迟、安全可控的MemoryScope开源项目。
|
机器学习/深度学习 自然语言处理 搜索推荐
构建智能搜索应用:Elasticsearch与自然语言处理的融合
【8月更文第28天】随着大数据和人工智能技术的发展,用户对搜索应用的需求已经从简单的关键词匹配转向了更加智能化、人性化的交互方式。本文将探讨如何利用Elasticsearch和自然语言处理(NLP)技术构建一个能够理解用户意图并提供精准搜索结果的智能搜索系统。
954 0
|
定位技术 C++
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
|
搜索推荐
百度百科都是谁写的
百度百科是全民共建的网络百科全书,允许注册用户编辑词条,强调平等、协作与分享。它拥有严格的审核机制,确保内容客观、权威,以参考资料为支撑。编辑者来自各行各业,从学生到专业人士,他们的贡献提升了百科的可信度。新创建的词条若具丰富引用,尤其来自政府网站,其可信度更高。通过用户间的交流与合作,百度百科不断进化和完善。
745 1
|
弹性计算 固态存储 调度
阿里云服务器选购指南_2024新版CPU内存带宽系统盘选择攻略
阿里云服务器选购指南_2024新版CPU内存带宽系统盘选择攻略,CPU内存、公网带宽和系统盘怎么选择?个人用户选择轻量应用服务器或ECS通用算力型u1云服务器,企业用户选择ECS计算型c7、通用型g7云服务器,阿里云百科分享阿里云服务器配置选择方法
|
安全 关系型数据库 数据库
上新|阿里云RDS PostgreSQL支持PG 16版本,AliPG提供丰富自研能力
AliPG在社区版16.0的基础上,在安全、成本、可运维性等多个方面做了提升,丰富的内核/插件特性支持,满足业务场景的需求