直接上代码和注释
动态规划
时间复杂度O(n ^ 2),空间复杂度O(1)
/**
* 动态规划
* 状态dp[i][j],子数组[i-j]的和
*
* 可以进行空间压缩
* max length of the subarray sum = k
* @param arr int整型一维数组 the array
* @param k int整型 target
* @return int整型
*/
public int maxlenEqualK (int[] arr, int k) {
// write code here
int len = arr.length;
if (len == 0) return 0;
int res = 0;
// int[][] dp = new int[len][len];
int cur = 0;
for (int i = 0; i < len; i++){
if (res >= len - i)
return res;
cur = arr[i];
if (cur == k)
res = Math.max(res, 1);
for (int j = i + 1; j < len; j++){
cur += arr[j];
if (cur == k)
res &