连续子数组数量
发布时间:2022-12-09 10:58:01 所属栏目:PHP教程 来源:
导读: class?Solution?{
public:
????int?mod?=?1e9?+?7;
????int?n?=?0;
????void?func(vector&?a,?vector>&?arr)?{
????????for?(int?i?=?0;?i??0?&&?temp?%?2?==?0)?{
?????????????
public:
????int?mod?=?1e9?+?7;
????int?n?=?0;
????void?func(vector&?a,?vector>&?arr)?{
????????for?(int?i?=?0;?i??0?&&?temp?%?2?==?0)?{
?????????????
|
class?Solution?{ public: ????int?mod?=?1e9?+?7; ????int?n?=?0; ????void?func(vector&?a,?vector>&?arr)?{ ????????for?(int?i?=?0;?i??0?&&?temp?%?2?==?0)?{ ????????????????arr[i][0]++; ????????????????temp?/=?2; ????????????} ????????????temp?=?a[i]; ????????????while?(temp?>?0?&&?temp?%?5?==?0)?{ ????????????????arr[i][1]++; ????????????????temp?/=?5; ????????????} ????????} ????} ????int?get_ans(vector>&?arr,?int?x)?{ ????????long?long?ans?=?0; ????????int?two_num?=?0,?five_num?=?0; ????????int?l?=?0,?r?=?0; ????????while?(r?=?x)?{ ????????????????ans?+=?n?-?r; ????????????????two_num?-=?arr[l][0]; ????????????????five_num?-=?arr[l][1]; ????????????????++l; ????????????} ????????????++r; ????????} ????????return?ans?%?mod; ????} ????int?getSubarrayNum(vector&?a,?int?x)?{ ????????n?=?a.size(); ????????vector>?arr(n,?vector?(2)); ????????func(a,?arr); ????????return?get_ans(arr,?x); ????} }; 乘积末尾0的数量取决于乘积中因子2和因子5的最小值。 所以,要解决这个问题PHP多维数组,我们可以先计算一下每个元素包含几个因子2和因子5,并用一个数组arr记录下来。 之后,再用双指针遍历arr数组,当累计的因子数量中的较小值大于等于x时,连续子数组乘积末尾0的数量必然大于等于x,此时进行下标计算即可求出以指针l为起始位置的所有连续子数组的数量。 (编辑:我爱制作网_池州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330577号