全是正数的数组中找和等于给定值的最长子数组

来源:互联网 发布:c语言大纲 编辑:程序博客网 时间:2024/05/06 03:58

这个题来自于左程云老师的书本p354,但是讲的并不是很透彻,现在这里试着分析如下

代码如下

#include <iostream>using namespace std;int arr[]={1,2,1,1,1};int k=3;int len=5;int fun(){  int ret=0;  int left=0;  int right=0;  int sum=arr[0];  while(right<len)  {    if(sum<k){  right++;  if(ret>=len)  break;  sum+=arr[right];}else if(sum>k){   sum-=arr[left];   left++;}else{ret=max(ret,right-left+1);sum-=arr[left];right++;left++;}  }     return ret;}int main(){  cout<<fun()<<endl;  return 0;}


0 0
原创粉丝点击