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

福大大 答案2021-03-23:

双指针。小于等于K时,右指针右移,窗口和的值累加,等于时收集答案;大于K时,左指针右移,窗口和的值减少。

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

package mainimport "fmt"func main() {    arr := []int{1, 2, 3, 0}    ret := getMaxLength(arr, 6)    fmt.Println(ret)}func getMaxLength(arr []int, K int) int {    arrLen := len(arr)    if arrLen == 0 {        return 0    }    ans := 0    left := 0    right := 0    sum := arr[0]    for right < arrLen-1 {        if sum == K {            ans = getMax(ans, right-left+1)            right++            sum += arr[right]        } else if sum < K {            right++            sum += arr[right]        } else {            sum -= arr[left]            left++        }    }    if sum == K {        ans = getMax(ans, right-left+1)    }    return ans}func getMax(a int, b int) int {    if a > b {        return a    } else {        return b    }}

执行结果如下:


左神java代码
评论

©著作权归作者所有:来自51CTO博客作者福大大的原创作品,如需转载,请注明出处,否则将追究法律责任

每一份赞赏源于懂得

赞赏

0人进行了赞赏支持

更多相关文章

  1. 写了一篇博客,百度, bing, google搜索对比
  2. 随笔
  3. AD Command
  4. Apache服务的反向代理及负载均衡配置
  5. 你见过哪些令你瞠目结舌的 JavaScript 代码技巧?
  6. DBA的小学美术功底
  7. chrome查看网站字符集编码的方法(不需要安装charset)
  8. RabbitMQ:rabbitmq.config(not found)问题解决
  9. CDH启动lzo压缩

随机推荐

  1. 一个简单QQ群聊案例代码解析(PHP实现)
  2. php面向对象简单概括
  3. 一个简单的部门案例详解(PHP代码实例)
  4. __construct() 和 __destory() 在 PHP 中
  5. 关于php变量申明和内存中的存放方式
  6. PHP面向对象之魔术方法(__tostring,__invo
  7. PHP正则表达式之2种模式和Cookie详解(代码
  8. PHP生命周期
  9. PHP面向对象之抽象类详解(代码实例)
  10. Java Dao层的作用