2021-03-24:给定一个整数组成的无序数组arr,值可能正、可能负、可能0。给定一个整数值K,找到arr的所有子数组里,哪个子数组的累加和等于K,并且是长度最大的。返回其长度。

福大大 答案2021-03-24:

我刚开始的想法,是对数组的每一位加上一个值,把数组全部变成非负数。比如[-5,3,1]变成[0,8,6]。可惜这种方法行不通,因为整数值K会变成不固定,还是没法用双指针。

求前缀和,存map。

代码用golang编写,代码如下:

package main

import "fmt"

func main() {
arr := []int{1, -1, 2, 3, -4, -1, 9}
ret := maxLength(arr, 9)
fmt.Println(ret)
}
func maxLength(arr []int, k int) int {
if len(arr) == 0 {
return 0
}
// key:前缀和
// value : 0~value这个前缀和是最早出现key这个值的
mmap := make(map[int]int)
mmap[0] = -1 // important
llen := 0
sum := 0
for i := 0; i < len(arr); i++ {
sum += arr[i]
if _, ok := mmap[sum-k]; ok {
llen = getMax(i-mmap[sum-k], llen)
}
if _, ok := mmap[sum]; !ok {
mmap[sum] = i
}
}
return llen
} func getMax(a int, b int) int {
if a > b {
return a
} else {
return b
}
}

执行结果如下:


左神java代码

评论

2021-03-24:给定一个整数组成的无序数组arr,值可能正、可能负、可能0。给定一个整数值K,找到arr的所有子数组里,哪个子数组的累加和等于K,并且是长度最大的。返回其长度。的更多相关文章

  1. 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。

    分析,是一个dp的题目, 设f[i]表示以i为结尾的最大值,g[i]表示以i结尾的最小值,那么 f[i+1] = max{f[i]*arr[i+1], g[i]*arr[i+1],arr[i+1]} ...

  2. 【LeetCode】1432. 改变一个整数能得到的最大差值 Max Difference You Can Get From Changing an Integer

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力 日期 题目地址:https://leetcode ...

  3. 算法进阶面试题04——平衡二叉搜索树、AVL/红黑/SB树、删除和调整平衡的方法、输出大楼轮廓、累加和等于num的最长数组、滴滴Xor

    接着第三课的内容和讲了第四课的部分内容 1.介绍二叉搜索树 在二叉树上,何为一个节点的后继节点? 何为搜索二叉树? 如何实现搜索二叉树的查找?插入?删除? 二叉树的概念上衍生出的. 任何一个节点,左比 ...

  4. 累加和为 K 的最长子数组问题

    累加和为 K 的最长子数组问题 作者:Grey 原文地址: 博客园:累加和为 K 的最长子数组问题 CSDN:累加和为 K 的最长子数组问题 题目描述 给定一个整数组成的无序数组 arr,值可能正.可 ...

  5. 给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。

    给定整数a1.a2.a3.....an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8). 分析:此题相对于本节"寻找满 ...

  6. LeetCode竞赛题:K 次取反后最大化的数组和(给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。)

    给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次.(我们可以多次选择同一个索引 i.) 以这种方式修改数组后 ...

  7. 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。

    描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...

  8. 作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)

    题目描述 给定一个整数数组,找出其中两个数相加等于目标值 输入 [1,3,5,7,9,11] 10 输出 1,9 3,7 代码: import java.util.HashMap; import ja ...

  9. 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

    今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的 ...

  10. 给定一个整数数组 nums 和一个目标值 target,求nums和为target的两个数的下表

    这个是来自力扣上的一道c++算法题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案 ...

随机推荐

  1. pom文件信息的解析

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  2. Spring-纯Java创建一个SSM【webapp】

    纯Java搭建webapp QuickStart 使用纯 Java 来搭建一个 SSM 环境,即在项目中,不存在任何 XML 配置,包括 web.xml 1创建一个Maven工程 引入依赖 <! ...

  3. sqli-labs搭建

    今天使用 phpstudy 搭建了 sqli-labs 练习 SQL 注入平台,其中遇到了两个问题. phpstudy phpstudy 中集成了 Apache.Nginx.PHP.Mysql.php ...

  4. 人脸关键点的应用场景及重难点解析丨Dev for Dev 专栏

    本文为「Dev for Dev 专栏」系列内容,作者为声网视频组 AI 算法工程师 周世付. 人脸检测.人脸关键点检测,是计算机视觉的基础算法.许多酷炫应用背后,例如美颜.贴纸.人脸驱动 avatar ...

  5. fpm模式下读取到is_cli为何为true

    目录 问题出现和简单排查 排查 经过思考和猜测,严重怀疑是fpm读取到了cli下的opcache 原起 粗浅探索 测试代码 opcache配置 共享内存缓存与文件缓存 php-fpm下读取到is_cl ...

  6. java网络编程--1 网络模型、网络协议

    java网络编程--1 网络模型.网络协议 javaweb指的是网页编程 B/S 网络编程指的是面向TCP/IP相关 C/S 1.1.概述 两种不同的通信模式: 实时通信:打电话 连接---接了--- ...

  7. 泰拉瑞亚EasyBuildMod便捷建造模组开发详细过程

    pre { overflow-y: auto; max-height: 400px } img { max-width: 500px; max-height: 300px } github地址: ht ...

  8. PHP微信三方平台-微信支付(扫码支付)

    1.官方文档地址: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1 2.逻辑分析: 生成支付二维码->用户扫码支付-& ...

  9. AIGC时代:未来已来

    摘要:人工智能的快速发展使得我们进入了AIGC时代.AIGC时代的到来,将会带来巨大的机遇和挑战. 本文分享自华为云社区<GPT-4发布,AIGC时代的多模态还能走多远?系列之一: AIGC时代 ...

  10. Linux配置为代理服务器,代理微信

    1.安装squid(全程使用root账号,如使用其他请注意权限问题) yum install squid 2.生成代理的账号密码 #如果没有htpasswd命令 先安装sudo yum install ...