2021-03-23:给定一个正整数组成的无序数组arr,给定一个正整数值K,找到arr的所有子数组
16lz
2021-03-23
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代码
评论
每一份赞赏源于懂得
赞赏
0人进行了赞赏支持
更多相关文章
- 写了一篇博客,百度, bing, google搜索对比
- 随笔
- AD Command
- Apache服务的反向代理及负载均衡配置
- 你见过哪些令你瞠目结舌的 JavaScript 代码技巧?
- DBA的小学美术功底
- chrome查看网站字符集编码的方法(不需要安装charset)
- RabbitMQ:rabbitmq.config(not found)问题解决
- CDH启动lzo压缩