对于一个给定的数组，编写一个函数来找到最长的连续子数组，其中的元素总和为给定的目标值。
target_sum = 7
nums = [1,3,6,3,8,-1,2,9,5]
可以使用滑动窗口（双指针）的方法，在数组中维护一个左右指针，每次将右指针向右移动一位，并将窗口内的元素总和与目标和进行比较，如果小于目标和，则右指针继续向右移动；如果大于目标和，则将左指针向右移动一位，缩小窗口范围，直到窗口内的元素总和等于目标和为止。过程中记录窗口长度的最大值，即为答案。

以下是 Python 代码实现：

```python
def maxSubarray(nums, target_sum):
    n = len(nums)
    left, right = 0, 0  # 左右指针
    cur_sum = 0  # 窗口内元素的总和
    max_len = 0  # 最长连续子数组的长度
    while right < n:
        cur_sum += nums[right]
        while cur_sum > target_sum:  # 如果窗口内的元素总和大于目标和
            cur_sum -= nums[left]  # 将左指针指向的元素从窗口中剔除
            left += 1  # 左指针向右移动
        if cur_sum == target_sum:  # 如果窗口内的元素总和等于目标和
            max_len = max(max_len, right - left + 1)  # 更新最大长度
        right += 1  # 右指针向右移动
    return max_len
```