题目:
假定有数组arr[4]={3,1,4,7}, 求出数组中子数组中等于12的最大长度。
基本思想
创建一个hash表,其key等于数组中遍历过的数的和,其value等于当前遍历的数在数组中的下标。用sum保存遍历过的数的总和,len保存最大长度;依次从数组的开头遍历,如果sum-k的值在hash表中有记录,则len更新为i-map[sum-k]和len的较大值,如果不存在就将{sum,i}加入map中,以便下次查询。
代码如下:
#include <iostream>
#include <map>
#include <stdlib.h>
using namespace std;
int maxLength(int* arr,int</