可以通过双指针的方法解决该问题。双指针分别指向子数组的最左端和最右端,然后不断调整指针所指向的数值,直到子数组的和等于 num 或者指针无法再继续调整为止。
代码示例:
public static boolean subarraySum(int[] nums, int num) { int left = 0; int right = 0; int sum = 0; while (right < nums.length) { sum += nums[right]; while (left <= right && sum > num) { sum -= nums[left++]; } if (sum == num) { return true; } right++; } return false; }