leetcode2875. 无限数组的最短子数组(有个long long的老问题要注意)

原题

https://leetcode.cn/problems/minimum-size-subarray-in-infinite-array/)

原题代码

class Solution {
public:
    int minSizeSubarray(vector<int>& nums, int target) {
        int n=nums.size(),ans=INT_MAX,left=0;
        long long s=0;
        long long total=accumulate(nums.begin(),nums.end(),0LL);//这里0也要加long long,不然还是以整数的类型相加的,在本题会数据溢出
        long long res=target%total;
        for(int i=0;i<2*n;i++){
            s+=nums[i%n];
            while(s>res){
                s-=nums[left%n];
                left++;
            }
            if(s==res){
                ans=min(ans,i-left+1);
            }
        }
        return (ans==INT_MAX?-1:ans+target/total*n);
    }
};

屏幕截图_5-3-2026_17219_leetcode

解释

posted @ 2026-03-05 17:25  Time_q  阅读(1)  评论(0)    收藏  举报