牛客题霸 [ 未排序数组中累加和为给定值的最长子数组长度] C++题解/答案

题目描述

给定一个无序数组arr, 其中元素可正、可负、可0。给定一个整数k,求arr所有子数组中累加和为k的最长子数组长度

题解:

先求出前缀和
然后用map来记录第i位的前缀和
要找和为k的子数组
我们直接看(第i位前缀和+k)是否存在,如果存在map的值指向的第j位,那长度就是j-i+1
取最大值
当然还有可能前缀和本身就是k,记得不要忘了这种情况

代码:

#include<unordered_map>
class Solution {public:/*** max length of the subarray sum = k* @param arr int整型vector the array* @param k int整型 target* @return int整型*/int maxlenEqualK(vector<int>& arr, int k) {// write code hereif(arr.size()==0)return 0;vector<int>w(arr.size(),0);w[0]=arr[0];for(int i=1;i<arr.size();i++){w[i]=w[i-1]+arr[i];}int maxx=0;unordered_map<int,int> ump;for(int i=0;i<arr.size();i++){ump[w[i]]=i;}int ans=0;for(int i=0;i<arr.size();i++){if(ump.count(w[i]+k)){ans =max(ans, ump[w[i]+k]-i);}}if(ump.count(k)) ans = max(ans, ump[k]+1);return ans;}
};

牛客题霸 [ 未排序数组中累加和为给定值的最长子数组长度] C++题解/答案相关推荐

  1. 左神算法:未排序正数数组中累加和为给定值的最长子数组长度(Java版)

    本题来自左神<程序员代码面试指南>"未排序正数数组中累加和为给定值的最长子数组长度"题目. 题目 牛客OJ:未排序数组中累加和为给定值的最长子数组长度 题解 本文提供的 ...

  2. 未排序数组中累加和为给定值的最长子数组系列问题

    题目:给定一个无序数组arr,其中元素可正.可负.可 0,给定一个整数k.求arr所有子数组中累加和为k的最长子数组长度. 补充问题: 1.给定一个无序数组arr,其中元素可正.可负.可 0.求arr ...

  3. 牛客题霸 [删除有序链表中重复的元素] C++题解/答案

    牛客题霸 [删除有序链表中重复的元素] C++题解/答案 题目描述 删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次 例如: 给出的链表为1\to1\to21→1→2 ...

  4. 牛客题霸 [子数组的最大累加和问题] C++题解/答案

    牛客题霸 [子数组的最大累加和问题] C++题解/答案 题目描述 给定一个数组arr,返回子数组的最大累加和 例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, ...

  5. 未排序正整数组中累加和为指定值的最长子数组长度

    题目:给定一个数组arr,该数组无序,但每个值都为正数,在给定一个正数k.求arr中所有的子数组中所有元素累加为k的最长子数组长度.  例如,arr = [1,2,1,1,1],k = 3.  累加和 ...

  6. 牛客题霸 NC4 判断链表中是否有环

    https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9 解决方案 Go func hasCycle(head *ListN ...

  7. 牛客题霸题目及题解汇总

    牛客题霸 单链表的选择排序 C++题解/答案 牛客题霸 最少素数拆分 C++题解/答案 牛客题霸 两数之和 C++题解/答案 牛客题霸 反转链表 C++题解/答案 牛客题霸 二分查找 C++题解/答案 ...

  8. 牛客题霸 [数组中未出现的最小正整数] C++题解/答案

    牛客题霸 [数组中未出现的最小正整数] C++题解/答案 题目描述 给定一个无序数组arr,找到数组中未出现的最小正整数 例如arr = [-1, 2, 3, 4].返回1 arr = [1, 2, ...

  9. 牛客题霸 [在转动过的有序数组中寻找目标值] C++题解/答案

    牛客题霸 [在转动过的有序数组中寻找目标值] C++题解/答案 题目描述 给出一个转动过的有序数组,你事先不知道该数组转动了多少 (例如,0 1 2 4 5 6 7可能变为4 5 6 7 0 1 2) ...

最新文章

  1. caffe prototxt分析
  2. 震惊!线上四台机器同一时间全部 OOM,到底发生了什么?
  3. Perl Debug error: SetConsoleMode failed, LastError=|6|
  4. Hadoop常见面试45问
  5. 秦九韶算法递推公式_如何教会女友递归算法?
  6. 用神经网络例子讲解TF运行方式~人工智能入门编程例子讲解
  7. python matlabplot写字_Matlab中plot基本用法的具体使用
  8. ThinkPHP---案例1登录登出和添加部门
  9. 华师大版数学分析下知识点总结
  10. excel游戏_Excel集中游戏
  11. spring boot中mybatisPlus代码生成器源码
  12. 玩转软路由 篇一:巨详细的修改Esxi7.0管理端口教程
  13. jquery为dom元素追加样式,使用addClass不生效
  14. Win10 IoT C#开发 2 - GPIO Pin 控制发光二极管
  15. Java使用模板导出带图片word文档
  16. 数据库搭建范式——BC范式
  17. 2022中级Android开发面试解答,当上项目经理才知道
  18. 延时100ms c语言程序,C51单片机延时时间的计算方法解析
  19. mysql的grant用法
  20. Android学习笔记-recreate()方法导致fragment重复新建的问题,解决方法

热门文章

  1. 大数据时代,数据科学都有些啥?
  2. 计算机科学中的虚拟化包括哪些,计算机虚拟化包括哪几个方面(计算机虚拟技术在计算机教学中的应用探究)...
  3. mysql全局变量 error_记录——node-mysql连接池遇到的全局变量问题
  4. 东北大学计算机 大一物理考试题,东北大学大学物理期末考题及答案Word版
  5. 剑指 Offer 05. 替换空格(两种做法)
  6. [Swagger2]配置Swagger
  7. [C++11]forward完美转发
  8. C++ 实现带权有向图的每对顶点之间的最短路径Floyd算法(完整代码)
  9. C++ class实现十字链表存储的图(完整代码)
  10. 科学家的假想-substr的妙用