想知道关于最小子数组我的答案为什么执行不对

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

我的答案:class Solution {
public:
int minSubArrayLen(int target, vector& nums) {
int l = 0;
int r = 0;
int sum = nums[l];
int ans = INT_MAX;
while (true)
{
if (sum < target) {
++r;
sum += nums[r];

        }
        else {

ans = std::min(r - l + 1, ans);
if (ans == 1) {
break;
}
++l;
sum -= nums[l];

        }
       
    }
    return ans;
}

};