题解 | #未排序数组中累加和为给定值的最长子数组长度#

未排序数组中累加和为给定值的最长子数组长度

https://www.nowcoder.com/practice/36fb0fd3c656480c92b569258a1223d5

#include<bits/stdc++.h>
using namespace std;
unordered_map<int, int> hmap;
int presum, ma, n, k,st, arr[100005];
int main() {
    cin >> n >> k;
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    hmap.insert({0, -1});//特别注意
    for (int i = 0; i < n; i++) {
        presum+=arr[i];
        if(hmap.find(presum-k)!=hmap.end()){
            st=hmap[presum-k];
            ma=max(ma,i-st);
        }
        if(hmap.find(presum)==hmap.end())hmap[presum]=i;//i处的前缀和最后更新
    }
    cout << ma;
}

【算法讲解046【必备】构建前缀信息的技巧-解决子数组相关问题】 https://www.bilibili.com/video/BV1Sj411q7fi/?share_source=copy_web&vd_source=5065fa61022691e8df35c771a30e6d29

全部评论

相关推荐

用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
03-30 19:30
石家庄学院 Java
野蛮的柯基在游泳:都能入股了,还得是Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务