使用网上的sum[i]==sum[j]的绝妙想法
使用了HashMap
public ArrayList<Integer> subarraySum(int[] nums) {
// write your code here
HashMap<Integer, Integer> ha=new HashMap<>();
//里面存前i项之和,与其对应的下角标
ArrayList<Integer> a=new ArrayList<>();
if(nums[0]==0)
{
a.add(0);
a.add(0);
return a;
}
int sum=0;
for(int i=0;i<nums.length;i++)
{
sum+=nums[i];
if(sum==0)//-1,1这种情况
{
a.add(0);
a.add(i);
return a;
}
if(ha.containsKey(sum))
{
a.add(ha.get(sum)+1);//当前面存在sum一样时,输出对应的下一个位置坐标
a.add(i);
return a;
}
ha.put(sum, i);
}
return a;
}