返回信息流请问一道leetcode上没有的题,也没百度到:
两个只含0,1的等长数组,求i,j使得1)j-i尽量大且 2)两个数组在i~j之间的1的个数相同
谢谢~
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #94351同步于 2017/11/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
求问一道只含0、1的数组题
zhbzhbzhbz
2017/11/7镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
问题等价于:
两个等长正整数数组a,b, 求i,j 使得1) j-i尽量大且 2) a[j]-a[i]=b[j]-b[i] (等同于:b[j]-a[j]=b[i]-a[i])
O(n)可解
设两个数组分别为array1和array2,将两个数组做差分,即用array1和array2对应位置相减得到新的差分数组array,记array的前缀和为sum[i],array1和array2在一个区间[l,r]的1的数目相等也等价于sum[r]-sum[l-1]==0,即sum[r]==sum[l-1],从左到右枚举r的位置,找到最左边的l-1的位置,可以用map维护一下,或者用数组也行,但是由于下标可能是负数,需要加上一个大的正整数平移一下
http://paste.ubuntu.com/25910078/