在你提供的代码中,有几个问题需要修正:
内部循环没有更新迭代器:在内部循环中,没有更新j的值。应该在判断条件不满足时,将j增加1以继续检查下一个子数组。
循环条件错误:外部循环条件应为i
没有返回结果:在内部循环结束后,没有返回最终结果tar。
修正后的代码如下:
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
sort(nums.begin(),nums.end());
int len = nums.size();
int tar = 0;
for(int i=1;i<=len;i++)
{
for(int j=0;j<=len-i;j++)
{
if(accumulate(nums.begin()+j,nums.begin()+j+i)==k)
tar++;
}
}
return tar;
}
};
请注意,在这段代码中使用了排序操作(sort函数),如果题目要求保持原数组顺序,请去掉排序操作。另外,此算法时间复杂度较高(O(n^3)),可能不适用于较大规模的输入数据。
内容由零声教学AI助手提供,问题来源于学员提问




