题解 | #和为K的连续子数组#

和为K的连续子数组

http://www.nowcoder.com/practice/704c8388a82e42e58b7f5751ec943a11

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 here
        int res = 0;
        int n = arr.size();
        // hash表记录前缀和(1:int)的下标(2:int)
        unordered_map<int, int> mp; 
        // 当前缀和为0,下标为-1
        mp[0] = -1;
        int temp = 0;
        // 初始化
        for(int i = 0; i < n; i++) {
            temp += arr[i];
            if(mp.find(temp - k) != mp.end()) {
                res = max(res, i - mp[temp - k]);
            }
            if(mp.find(temp) == mp.end()) {
                mp[temp] = i;
            }
        }
        return res;
    }
};
全部评论

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
我即大橘:耐泡王
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务