给定总和的子数组的开始和结束位置

问题描述

问题陈述:
给定大小为 n 个非负整数的未排序数组 arr ,请找到一个连续的子数组,该数组将添加给定数量 s

我已经使用滑动窗口技术来计算子数组的总和,然后将其与给定的数字进行比较。
这是我的代码,其使用大小为 n 的数组 arr ,用户的要求总和 s ,并在以下情况下返回子数组的开始和结束位置:它存在;如果不存在,则 -1

注意:在所需的输出中,数组元素的位置从1开始。因此,对于索引说i = 0,位置将为(i + 1)

vector<int> subarraySum(int arr[],int n,int s){
    int l=0,r=0;
    vector<int>v;
    long long sum=0;
    while(r<n)
    {
        sum=sum+arr[r];
        if(sum==s)
        {
            v.push_back(l+1);
            v.push_back(r+1);
            break;
        }
        else if(sum<s)
        {
            r++;
        }
        else{
            sum-=arr[l];
            l++;
            if(sum==s)
            {
                v.push_back(l+1);
                v.push_back(r+1);
                break;
            }
            r++;
        }
        
    }
    if(v.empty())
    {
        v.push_back(-1);
    }
    return v;
}

此代码失败的第一个测试用例是

Input: 
42 468 //n=42,s=468 and rest of the values are the array elements 
135 101 170 125 79 159 163 65 106 146 82 28 162 92 196 143 28 37 192 5 103 154 93 183 22 117 119 96 48 127 172 139 70 113 68 100 36 95 104 12 123 134
Its Correct output is:
38 42

And above Code's output is:
-1

预期时间复杂度:O(N)
预期辅助空间:O(1)

约束: 1

有人可以以此来启发我吗,哪里出了问题?而且解决这些问题的最佳方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...