自学内容网 自学内容网

Leetcode::3427.变长子数组求和

 给你一个长度为 n 的整数数组 nums 。对于 每个 下标 i0 <= i < n),定义对应的子数组 nums[start ... i]start = max(0, i - nums[i]))。

返回为数组中每个下标定义的子数组中所有元素的总和。

子数组 是数组中的一个连续、非空 的元素序列。

示例 1:

输入:nums = [2,3,1]

输出:11

解释:

下标 i子数组
0nums[0] = [2]2
1nums[0 ... 1] = [2, 3]5
2nums[1 ... 2] = [3, 1]4
总和11

总和为 11 。因此,输出 11 。

示例 2:

输入:nums = [3,1,1,2]

输出:13

解释:

下标 i子数组
0nums[0] = [3]3
1nums[0 ... 1] = [3, 1]4
2nums[1 ... 2] = [1, 1]2
3nums[1 ... 3] = [1, 1, 2]4
总和13

总和为 13 。因此,输出为 13 。

提示:

  • 1 <= n == nums.length <= 100
  • 1 <= nums[i] <= 1000

class Solution {
public:
    int subarraySum(vector<int>& nums) {

        int s=0;
        int n=nums.size();
        for(int i=0;i<n;i++)
        {
            int k=max(0,i-nums[i]);
            for(int j=k;j<=i;j++)
            {
                s+=nums[j];        
            }
        }

        return s;
    }
};


原文地址:https://blog.csdn.net/2401_83667206/article/details/145246592

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!