腾讯音乐笔试 源码 0926

第一题(AC):
一次可以变2个,将字符串变为全0或全1

思路:暴力

class Solution {
public:
    int minOperations(string str) {
        int len = str.length();

        // all to 0
        int ans0 = 0;
        for (int i = 0; i < len; ++i) {
          if (str[i] == '1') {
            ++ans0;
            ++i;
          }
        }

        int ans1 = 0;
        for (int i = 0; i < len; ++i) {
          if (str[i] == '0') {
            ++ans1;
            ++i;
          }
        }

        return min(ans0, ans1);
    }
};
第二题(AC):
给一个数组,找一段区间,其区间内的积的后缀有不少于x个0;给定x之后求有多少种这样的区间。
思路:
统计每个数内2和5的个数,然后前缀和。

class Solution {
public:
    int getSubarrayNum(vector<int>& a, int x) {
      const int mod = 1e9 + 7;
      int size = a.size();

      vector<int> n2(size, 0);
      vector<int> n5(size, 0);
      for (int i = 0; i < size; ++i) {
        if (i) {
          n2[i] = n2[i - 1];
          n5[i] = n5[i - 1];
        }
        int num = a[i];
        while (num % 2 == 0) {
          ++n2[i];
          num /= 2;
        }
        while (num % 5 == 0) {
          ++n5[i];
          num /= 5;
        }
      }

      long long ans = 0;
      for (int i = 0; i < size; ++i) {
        int num = (i ? n2[i - 1] : 0) + x;
        int dis2 = 0, dis5 = 0;
        auto p = lower_bound(n2.begin(), n2.end(), num);
        dis2 = distance(p, n2.end());

        num = (i ? n5[i - 1] : 0) + x;
        p = lower_bound(n5.begin(), n5.end(), num);
        dis5 = distance(p, n5.end());

        ans = (ans +  min(dis2, dis5)) % mod;
      }
      return ans;

    }
};

第三题(15%):

求好矩阵。

思路:每增加一行/一列,种类就*2.
所以总的种类有

其中8是2*2矩阵能带来的种类数。

然后x为偶数,也就是说每一个格子有x/2种选择,所以一共有


种可能。

然后对结果取模就可以。

注意%mod要根据费马小定理求

不知道为什么只过了15%
class Solution {
public:
    const long long mod = 1e9 + 7;
    int numsOfGoodMatrix(int n, int m, int x) {
        // write code here
        long long y = (long long)m + (long long)n;
        y %= mod;
        long long num1 = quickM(x, y);
        long long num2 = quickM(2, mod - 2);
        return  (int)((num1 * num2) % mod);
    }

    long long quickM(int b, long long y) {
      long long base = b % mod;
      long long ans = 1;
      while (y) {
        if (y & 1) ans = (ans * base) % mod;
        base = (base * base) % mod;
        y >>= 1;
      }
      return ans;
    }
};



#腾讯##腾讯音乐##腾讯音乐娱乐笔试##腾讯音乐23秋招笔试好难啊,麻了#
全部评论
按照每个位置填入值的奇偶性进行计算,那么偶数有 x/2 奇数有 x/2种情况。 理论上只有确认每个位置的奇偶性即可判断 2*2是否为偶数。 只要确定了第一行和第一列的奇偶情况,其他所有位置的奇偶情况一定确定。 (为什么一定确定,因为对于2*2,只要确定了3个格子,为保证偶数,第四个格子的奇偶性是唯一的。) 所以是 a= pow(2, m+n-1)种情况。 然后每种情况一共有b = pow(x/2, m*n)种排列情况。 总情况为  a*b。
3 回复 分享
发布于 2022-09-27 11:32 重庆
感谢分享
点赞 回复 分享
发布于 2022-09-27 09:48 北京
同学同花顺尝试一下吗,面试简单不造火箭,可保姆式全程跟进度,我帖子有内推
点赞 回复 分享
发布于 2022-09-27 09:31 浙江
第三题简直世另我
点赞 回复 分享
发布于 2022-09-26 22:36 北京
第三题思路一样。为什么只过15%,至今没找出问题在哪
点赞 回复 分享
发布于 2022-09-26 21:18 江苏

相关推荐

评论
2
13
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
3876次浏览 45人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16907次浏览 137人参与
# MiniMax求职进展汇总 #
25142次浏览 321人参与
# 春招至今,你的战绩如何? #
15716次浏览 144人参与
# 你的实习产出是真实的还是包装的? #
3051次浏览 53人参与
# 沪漂/北漂你觉得哪个更苦? #
1553次浏览 41人参与
# 巨人网络春招 #
11527次浏览 224人参与
# HR最不可信的一句话是__ #
1091次浏览 32人参与
# AI面会问哪些问题? #
946次浏览 23人参与
# 你做过最难的笔试是哪家公司 #
1247次浏览 22人参与
# AI时代,哪个岗位还有“活路” #
2853次浏览 51人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152905次浏览 889人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8021次浏览 43人参与
# XX请雇我工作 #
51155次浏览 171人参与
# 简历第一个项目做什么 #
32148次浏览 361人参与
# 简历中的项目经历要怎么写? #
311051次浏览 4265人参与
# 投格力的你,拿到offer了吗? #
178339次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
76981次浏览 375人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187605次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64730次浏览 886人参与
# 如果重来一次你还会读研吗 #
230018次浏览 2011人参与
# 正在春招的你,也参与了去年秋招吗? #
364353次浏览 2642人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务