/************************* 【题目】 未排序正数数组中累加和为给定值的最长子数组长度 给定一个数组 arr,该数组无序,但每个值均为正数,再给定一个正数 k。求 arr 的所有子数组中所有元素相加和为 k 的最长子数组长度。 例如,arr=[1,2,1,1,1],k=3。 累加和为 3 的最长子数组为[1,1,1],所以结果返回 3。 【要求】 时间复杂度 O(N),额外空间复杂度 O(1) *************************/ #include <iostream> using namespace std; int a[]={1,1,1,1,1,2,1}; int n=7; int k=4; void fun() { int count_len=0; int i=0,j=0; int sum=a[0]; while(j<n) { if(sum <k) sum+=a[j++]; if(sum==k) {count_len=(j-i+1>count_len)?(j-i+1):(count_len);sum-=a[i];++i;} if(sum >k) {sum-=a[i];i++;} } cout<<count_len; } int main() { cout << "Hello,C++ world of AnycodeX!" << endl; fun(); return 0; }
子数组
原创
©著作权归作者所有:来自51CTO博客作者wzdouban的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
vue 访问子组件示例 或者子元素
1、子组件 2、子元素 方法中:
VUE ref 访问子组件示例 或者子元素