class Solution {
public int subarraySum(int[] nums, int k){
Map<Integer,Integer> map = new HashMap<>();
map.put(0, 1);
int sum=0;
int count =0;for(int i=0;i<nums.length;++i){sum+= nums[i];
count += map.getOrDefault(sum-k, 0);
map.put(sum, map.getOrDefault(sum, 0) + 1);}return count;}}
class Solution {
public int findMaxLength(int[] nums){
Map<Integer,Integer> map = new HashMap<>();
map.put(0,-1);
int sum=0;
int ret =0;
for(int i =0; i < nums.length; i++){sum+= nums[i]==0 ? -1 :1;
if(map.containsKey(sum)){
ret = Math.max(ret, i - map.get(sum));}else{
map.put(sum,i);}}return ret;}}
class Solution {
public int pivotIndex(int[] nums){
for(int i =0; i < nums.length; i++){
int num =0;
for(int j =0; j < nums.length; j++){
if(j < i){
num += nums[j];}else if(j == i){continue;}else{
num -= nums[j];}}
if(num ==0){return i;}}return -1;}}
class NumMatrix {
int[][] sums;
public NumMatrix(int[][] matrix){
int m = matrix.length;if(m >0){
int n = matrix[0].length;
sums = new int[m + 1][n + 1];for(int i =0; i < m; i++){for(int j =0; j < n; j++){
sums[i + 1][j + 1]= sums[i][j + 1] + sums[i + 1][j] - sums[i][j] + matrix[i][j];}}}}
public int sumRegion(int row1, int col1, int row2, int col2){return sums[row2 + 1][col2 + 1] - sums[row1][col2 + 1] - sums[row2 + 1][col1] + sums[row1][col1];}}
/**
* Your NumMatrix object will be instantiated and called as such:
* NumMatrix obj = new NumMatrix(matrix);
* int param_1 = obj.sumRegion(row1,col1,row2,col2);
*/
class Solution { public int subarraySum(int[] nums, int k) { Map<Integer,Integer> map = new HashMap<>(); map.put(0, 1); int sum = 0; int count = 0; for (int i=0;i<nums.length;++i) { su.